5

マップ上に 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 の両方が同じ位置情報サービスを使用しようとするため、これにより問題が発生しますか? 矛盾や、正確な/必要な、または最新のデータの欠如はありますか?

4

1 に答える 1

1

このSO エントリを参照してください: CLLocationManager はすべてのインスタンスで同じデータを使用するため、競合はありません。

于 2010-04-07T08:07:10.097 に答える