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 回答