Encontrar la ubicación del usuario antes de cargas de mapa

votos
1

Estoy tratando de encontrar la ubicación del usuario usando:

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

El problema es que todavía no he inicializado el mapa de modo que el anterior no funciona. ¿Hay una manera de conseguir la ubicación del usuario sin necesidad de utilizar MapKit? O debería ser el uso de una técnica diferente?

Publicado el 12/03/2010 a las 21:34
fuente por usuario
En otros idiomas...                            


2 respuestas

votos
1

Para obtener la ubicación del usuario que necesita para realmente "inicio" del gestor de ubicación antes de tratar de leer la información de ubicación. Sugiero que nos fijamos en la muestra LocateMe de Apple.

Código de ejemplo LocateMe

En pocas palabras, conseguir información de ubicación del usuario se puede realizar en dos pasos:

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

... y entonces,

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

¡Espero que esto ayude!

Respondida el 19/04/2010 a las 11:46
fuente por usuario

votos
0

He eliminado casi esta pregunta, pero veo que alguien le dio un voto. Esta parece ser la respuesta:

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

AppDelegate es sólo una referencia a la aplicación delegue, donde vive mi ubicación instancia del gestor.

Respondida el 12/03/2010 a las 21:41
fuente por usuario

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