Разработка iPhone - CLLocationManager против MapKit - PullRequest
5 голосов
/ 07 апреля 2010

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

Кроме того, вот примерный пример кода:

- (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 будут пытаться использовать одни и те же службы определения местоположения? Будут ли какие-либо конфликты и нехватка точных / требуемых или текущих данных?

1 Ответ

1 голос
/ 07 апреля 2010

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

...