MKMapView
カスタム ビュー (青い点ではない) を使用してユーザーの位置を追跡するはずの があります。このビューを青い点に置き換えるために、次のように返します。
- (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id<MKAnnotation>)annotation
{
if (annotation == [mapView userLocation])
{
return userLocationView;
}
}
追跡を初期化するために、私は呼び出します
[mapView setShowsUserLocation: YES];
[mapView setUserTrackingMode: MKUserTrackingModeFollow animated: NO];
[mapView setDelegate: self];
予想どおり、-mapView:didUpdateUserLocation:
アプリのロード時に 1 回呼び出されます。残念ながら、-mapView:viewForAnnotation:
次の実装に変更しない限り、再度呼び出されることはありません。
- (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id<MKAnnotation>)annotation
{
if (annotation == [mapView userLocation])
{
return nil;
}
}
これらの変更により、マップはユーザーの位置のインジケーターとして青い点をロードし、-mapView:didUpdateUserLocation:
予想どおり頻繁に呼び出されます。
ユーザーの場所を追跡し、カスタムのユーザーの場所を表示するためのある種の相互排他性はありますか? どうすれば両方を実現できますか?
ソース
このプロジェクトは、この問題を示しています。https://dl.dropbox.com/u/2338382/MapKitFuckery.zip
バグ
これはおそらくバグであり、レーダーとして報告しました。当面は、受け入れられた回答で十分であることが証明されるはずです。ただし、カスタム アノテーション[mapView userLocation]
と.[mapView showsUserLocation]
CLLocationManager