我尝试在地图的中心显示一个引脚,不幸的是有些错误,并且引脚显示在屏幕的中间右侧。
这是我的代码
// Single annotation
[geocoder geocodeAddressString:self.detailsAnnotation completionHandler:^(NSArray* placemarks, NSError* error){
for (CLPlacemark* aPlacemark in placemarks)
{
// Process the placemark.
self.latitudeOfPlaceFromTable = aPlacemark.location.coordinate.latitude;
self.longitudeOfPlaceFromTable = aPlacemark.location.coordinate.longitude;
MKCoordinateRegion viewRegion;
// 1 Center
CLLocationCoordinate2D zoomLocation;
zoomLocation.latitude = self.latitudeOfPlaceFromTable;
zoomLocation.longitude = self.longitudeOfPlaceFromTable;
// Span
MKCoordinateSpan span;
span.latitudeDelta = 0.01f;
span.longitudeDelta = 0.01f;
// 2 Region
viewRegion.center = zoomLocation;
viewRegion.span = span;
// 3 Add an annotation
MKPointAnnotation * point = [[MKPointAnnotation alloc] init];
point.coordinate = zoomLocation;
point.title = self.titleAnnotation;
point.subtitle = self.detailsAnnotation;
[self.mapView addAnnotation:point];
// 4 Center the map on pin
[self.mapView setRegion:viewRegion animated:YES];
}
}];
有人可以提供一些帮助吗?感谢
答案 0 :(得分:2)
尝试使用以下代码更改最后一行代码:
[self.mapView setRegion:[self.mapView regionThatFits:viewRegion] animated:YES];
通常,MapView无法显示您尝试设置的确切区域,因为地图不是平坦的。
来自regionThatFits
方法的Apple文档:
调整指定区域的宽高比,以确保它适合地图视图的框架。 您可以使用此方法规范化区域值,然后在地图中显示它们。此方法返回一个新区域,该区域包含指定区域并且整齐地适合地图视图的框架内。
更新: 另一个建议是:确保地图视图宽度不超过实际屏幕宽度。在其他情况下,地图视图框架可能会超出屏幕的右边界,从而导致错误的中心点。