0

ボタンを押すと、ユーザーの場所を取得して注釈をドロップしたいときにボタンがあります。しかし、一度押すと、海の真ん中に注釈が追加され、ユーザーの場所が表示されます(これは機能します)。もう一度押すと、現在地に注釈が追加されます。

コード:

mapView.showsUserLocation = YES;

MKCoordinateRegion newRegion;

newRegion.center.latitude = mapView.userLocation.location.coordinate.latitude;
newRegion.center.longitude = mapView.userLocation.location.coordinate.longitude;

newRegion.span.latitudeDelta = 0.0004f;
newRegion.span.longitudeDelta = 0.0004f;

[mapView setRegion: newRegion animated: YES];


CLLocationCoordinate2D coordinate;
coordinate.latitude = mapView.userLocation.location.coordinate.latitude;
coordinate.longitude = mapView.userLocation.location.coordinate.longitude;

MKPointAnnotation *annotation = [[MKPointAnnotation alloc] init];

[annotation setCoordinate: coordinate];
[annotation setTitle: @"Your Car"];
[annotation setSubtitle: @"Come here for pepsi"];

[mapView addAnnotation: annotation];
[mapView setZoomEnabled: YES];
[mapView setScrollEnabled: YES];
4

1 に答える 1

1

CLLocationManager がそれを見つける前に、ユーザーの場所を求めているようです。

マップビューを設定mapView.showsUserLocation = YES;すると、非同期でユーザーの検索が開始locationManagerされるため、すぐに正しい場所が得られない可能性があります。

カスタムを設定しCLLocationManager、ボタンを押してその場所の更新を開始し、場所が見つかったらデリゲートに注釈を設定する必要があります。

于 2012-08-12T07:56:39.783 に答える