iPhone Разработка - CLLocationManager против MapKit

голоса
6

Если я хочу, чтобы показать userLocation на карте, и в то же время записи местоположения пользователя, это хорошая идея, чтобы добавить к наблюдателю userLocation.location и записывать места, или я должен еще использовать CLLocationManager для записи местоположения пользователя и использования mapView.showUserLocation показать текущее местоположение пользователя (синий индикатор)? Я хочу, чтобы показать синий индикатор по умолчанию, поддерживаемый MapKit API.

Кроме того, здесь грубый пример кода:

- (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
    // ...
}

Под капотом, я думаю, что MKMapView также использует CLLocationManager, чтобы получить текущее местоположение пользователя? Итак, будет ли это создавать какие-либо проблемы, потому что я полагаю, что оба CLLocationManager и MapView будут пытаться использовать те же услуги, местоположение? Будут ли какие-либо конфликты и отсутствие точной / требуется или текущие данные?

Задан 07/04/2010 в 07:49
источник пользователем
На других языках...                            


1 ответов

голоса
1

Смотрите эту SO запись : CLLocationManager использует одни и те же данные во всех его экземпляров, так что нет никакого конфликта.

Ответил 07/04/2010 в 09:07
источник пользователем

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