MKMapViewのshowsUserLocationの不規則な振る舞い

私は MKMapView MKUserTrackingBarButtonItem を持っています。ユーザーの現在の場所は、 Follow または FollowWithHeading モードでのみ表示する必要があります。実装は次のようになります。

- (void)mapView:(MKMapView *)mapView 
didChangeUserTrackingMode:(MKUserTrackingMode)mode 
       animated:(BOOL)animated
{
    [mapView setShowsUserLocation:(mode != MKUserTrackingModeNone)]; 
}

これは setShowsUserLocation が呼び出され、 MKUserTrackingBarButtonItem が押されたときに期待通りに機能する、コード内の唯一の場所です。

私の問題は、マップをドラッグして UserTrackingMode を変更したときに発生します。この場合、「青い点」の注釈は意図したとおりに消えますが、ドラッグの終了時に約20%のケースで再表示されます。

次に、マップの showsUserLocation プロパティをテストすると、「青い点」の注釈が表示されていても、常にNOに設定されます。

私はあなたがこれを解決する方法を知っているなら、非常に感謝します。

2

1 答え

showsUserLocation であっても、ドラッグ中に特定の時間にユーザーの場所の更新が反映された場合、 didUpdateUserLocation デリゲートメソッドが起動し、 > NO

これは地図表示の欠点と思われる。

didUpdateUserLocation showsUserLocation を切り替えると、マップビューの内部状態が修正されて青い点が消えてしまいます。

-(void)mapView:(MKMapView *)mapView didUpdateUserLocation:(MKUserLocation *)userLocation
{
    if (!mapView.showsUserLocation)
    {
        mapView.showsUserLocation = YES;
        mapView.showsUserLocation = NO;
    }
}
1
追加された
これは動作します、ありがとう!
追加された 著者 carton,