1

マップを表示するときに、ユーザーの位置を中央に表示し、約 2 のスパンで表示したいと考えています。ユーザーの周囲 5k の距離。私のコードは次のとおりです。

- (void)viewDidLoad
{
  [super viewDidLoad];
  mapView.mapType = MKMapTypeStandard;
  mapView.showsUserLocation = YES;
  MKUserLocation *userLocation = mapView.userLocation;
  MKCoordinateRegion region = MKCoordinateRegionMakeWithDistance(
                            userLocation.location.coordinate, 5000, 5000);
  [mapView setRegion:region animated:NO];
}

その結果setRegion、マップを呼び出した後、スクロールまたはズームできない空の青いボックスとして表示されるようになりました。しばらく海が表示されているのではないかと思ったのですが、地図自体がスクロールしないのでそうではないようです。同じ効果で、50mから25000mまでのすべてに距離を設定しようとしました。私電話をしなければsetRegion、ズームアウトされた世界地図が正常に表示され、ユーザーの場所が期待どおりに強調表示されます。

これに関するいくつかの関連する質問を参照した後、次の行も挿入してみました。

MKCoordinateRegion adjustedRegion = [mapView regionThatFits:region];

setRegion メッセージを次のように置き換えます。

[mapView setRegion:adjustedRegion animated:NO];

しかし、それは私と同じ結果になります。

私は何を間違っていますか?

4

1 に答える 1

1

mapView が有効な場所を取得するのを待っていません。コントローラを mapView のデリゲートに設定してから mapView に指示すると、最終的にデバイスの座標を持つshowUserLocationコールバックが返されます。- (void)mapView:(MKMapView *)mapView didUpdateUserLocation:(MKUserLocation *)userLocationズームやパンができないと思っているのは、(0,0) が海の中にあり、すべてが青いからだと思います。ピンチやズームなどのタッチ操作を許可するように MKMapView が設定されていない可能性もあるため、xib で適切なチェックボックスがすべてオンになっていることを確認してください。

于 2012-04-12T19:49:59.643 に答える