Znalezienie lokalizacji użytkownika przed map ładunku

głosy
1

Próbuję znaleźć lokalizację użytkownika za pomocą:

CLLocationCoordinate2D _location;
CLLocation *userLoc = nil;
if(appDelegate.clLocationManager.locationServicesEnabled){
    userLoc = mapView.userLocation.location;
    _location = userLoc.coordinate;
}

Problemem jest to, że nie zostały jeszcze zainicjowany mapę więc powyższe nie działa. Czy istnieje sposób, aby uzyskać lokalizacji użytkownika bez użycia mapkit? Czy mam być przy użyciu innej techniki?

Utwórz 12/03/2010 o 21:34
źródło użytkownik
W innych językach...                            


2 odpowiedzi

głosy
1

Aby uzyskać lokalizację użytkownika trzeba rzeczywiście „start” menedżera lokalizacji przed próbą zapoznania się z informacjami o lokalizacji. I sugerują, że patrzysz na LocateMe próbki z Apple.

LocateMe Przykładowy kod

W skrócie, Uzyskiwanie informacji o lokalizacji użytkownika mogą być wykonane w dwóch etapach:

- (void)viewDidLoad {
    [[self locationManager] startUpdatingLocation];
}

- (CLLocationManager *)locationManager { 

    if (locationManager != nil) {       
        return locationManager; 
    }

    NSLog(@"%s, Creating new Location Manager instance.", __FUNCTION__);
    locationManager = [[CLLocationManager alloc] init]; 
    locationManager.desiredAccuracy = kCLLocationAccuracyBest; 
    locationManager.distanceFilter = DISTANCE_FILTER_VALUE;
    locationManager.delegate = self; 

    return locationManager; 
}

... i wtedy,

- (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation { 
    NSLog(@"%s, location manager returned a new location.", __FUNCTION__);

    // Check if location is valid (or good enough for us), 
    // and then process the location
    if ([self locationIsValid:newLocation]) {
            [self processLocation:newLocation];

            // Very important! When your done with it, stop the location manager
            [[self locationManager] sopUpdatingLocation];

            // (Maybe even) clear it
            locationManager.delegate = nil;
            [locationManager release];
            locationManager = nil;
    }
}

Mam nadzieję że to pomoże!

Odpowiedział 19/04/2010 o 11:46
źródło użytkownik

głosy
0

I prawie usunięte na to pytanie, ale zobaczyć ktoś dał mu głos w górę. Wydaje się to być odpowiedź:

CLLocationCoordinate2D _location;
CLLocation *userLoc = nil;
if(appDelegate.clLocationManager.locationServicesEnabled){
    userLoc = appDelegate.clLocationManager.location;
    _location = userLoc.coordinate;
}

appDelegate jest tylko odniesienie do delegata aplikacji, gdzie moje miejsce wystąpienie menedżer mieszka.

Odpowiedział 12/03/2010 o 21:41
źródło użytkownik

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more