Nalezení polohy uživatele před načtení mapy

hlasů
1

Snažím se najít polohu uživatele pomocí:

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

Problém je v tom, že jsem ještě inicializaci mapy tak, aby výše nefunguje. Existuje způsob, jak se dostat polohu uživatele bez použití mapkit? Nebo bych měl použít jiný techniku?

Položena 12/03/2010 v 21:34
zdroj uživatelem
V jiných jazycích...                            


2 odpovědí

hlasů
1

Chcete-li získat polohu uživatele je potřeba skutečně „start“ správce umístění před pokusem o čtení informací o poloze. Domnívám se, že se díváte na vzorku LocateMe od společnosti Apple.

LocateMe Sample Code

Stručně řečeno, informace o poloze Získání uživatele může být provedeno ve dvou krocích:

- (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; 
}

... a pak,

- (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;
    }
}

Snad to pomůže!

Odpovězeno 19/04/2010 v 11:46
zdroj uživatelem

hlasů
0

Skoro jsem se vypouští na tuto otázku, ale vidět ji někdo dal nahoru hlas. To se zdá být odpověď:

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

appDelegate je jen odkaz na aplikační delegáta, kde je moje místo manažera instance žije.

Odpovězeno 12/03/2010 v 21:41
zdroj uživatelem

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