Trouver l'emplacement de l'utilisateur avant le chargement de carte

voix
1

J'essaie de trouver l'emplacement de l'utilisateur à l'aide:

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

Le problème est que je ne l'ai pas encore initialisé la carte de sorte que le ne fonctionne pas au-dessus. Y at-il un moyen d'obtenir l'emplacement de l'utilisateur sans utiliser MapKit? Ou devrais-je utiliser une technique différente?

Créé 12/03/2010 à 21:34
source utilisateur
Dans d'autres langues...                            


2 réponses

voix
1

Pour obtenir l'emplacement que vous devez réellement « commencer » le gestionnaire de l'emplacement de l'utilisateur avant d'essayer de lire les informations de localisation. Je suggère que vous regardez échantillon LocateMe d'Apple.

LocateMe Exemple de code

En un mot, obtenir des informations de localisation de l'utilisateur peut être fait en deux étapes:

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

... et alors,

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

J'espère que cela t'aides!

Créé 19/04/2010 à 11:46
source utilisateur

voix
0

Je presque effacé cette question, mais voir quelqu'un lui a donné un vote en place. Cela semble être la réponse:

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

appDelegate est juste une référence au délégué de l'application, où vit mon emplacement instance de gestionnaire.

Créé 12/03/2010 à 21:41
source utilisateur

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