0

以下のコードは、ユーザーの場所にズームインするために使用している方法ですが、ユーザーが地図を移動すると、その場所に継続的に再ズームするのを停止します。この方法の問題は、アプリ内のユーザーロケーションデータの許可を求められ、[はい]を選択しても、何も実行されないことです。正しくズームする前に、ページを離れて戻る必要があります。

-(void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context{
    if ([self.mapView showsUserLocation])
    {
        MKCoordinateRegion region;
        region.center = self.mapView.userLocation.coordinate;

        MKCoordinateSpan span;
        span.latitudeDelta  = .50; // Change these values to change the zoom
        span.longitudeDelta = .50;
        region.span = span;

        [self.mapView setRegion:region animated:YES];

        self.mapView.showsUserLocation = NO;}
}

上記の方法では、ユーザーの場所の変更を監視し、見つかったら場所を設定する必要があります。次に、ifステートメントに条件を設定して停止させます。それ以外の場合は、マップを移動したときにユーザーの場所に戻り続けます。

4

1 に答える 1

1

ユーザーの位置がまだわからないため、ポップアップが表示されたときにself.mapView.showsUserLocation設定されているように聞こえます。FALSEこの問題を回避するには、独自の変数を使用することをお勧めします。このクラスでグローバルブール値を作成し、self.mapView.showsUserLocationの代わりに使用します。また、ユーザーがポップアップに同意した後に、この関数が実際に呼び出されていることを確認してください。NSLoggingを使用したことがありますか?

于 2013-02-21T01:49:08.377 に答える