Pregunta

Si quiero mostrar userLocation en el mapa, y al mismo tiempo récord la ubicación del usuario, ¿es una buena idea añadir un observador a userLocation.location y registrar los lugares, o debería seguir utilizando CLLocationManager para el registro de usuario ubicación y uso mapView.showUserLocation para mostrar la ubicación actual del usuario (indicador azul)? Quiero mostrar el indicador azul por defecto con el apoyo de la API MapKit.

Además, aquí hay un código de ejemplo áspera:

- (void)viewDidLoad {
    ...

    locationManager = [[CLLocationManager alloc] init]; 
    locationManager.desiredAccuracy = kCLLocationAccuracyBest; 
    locationManager.distanceFilter = DISTANCE_FILTER_VALUE;
    locationManager.delegate = self; 
    [locationManager startUpdatingLocation];

    myMapView.showUserLocation = YES;
    [myMapView addObserver:self forKeyPath:@"userLocation.location" options:0 context:nil];

    ...
}

- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context {
    // Record the location information
    // ...
}

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

    // Make sure that the location returned has the desired accuracy
    if (newLocation.horizontalAccuracy <= manager.desiredAccuracy)
        return;

    // Record the location information
    // ...
}

Bajo el capó, creo que también utiliza MKMapView CLLocationManager para obtener la ubicación actual del usuario? Por lo tanto, será este crea ningún problema porque creo tanto CLLocationManager y MapView intentarán utilizar los mismos servicios de ubicación? Habrá conflictos y la falta de datos precisos / requerido o actuales?

¿Fue útil?

Solución

Ver este entrada : CLLocationManager utiliza los mismos datos a través de todas sus instancias, por lo que hay no hay conflicto.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top