针位置的中心地图

时间:2015-06-25 16:06:16

标签: ios objective-c iphone

我尝试在地图的中心显示一个引脚,不幸的是有些错误,并且引脚显示在屏幕的中间右侧。

这是我的代码

// 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];
    }
}];

有人可以提供一些帮助吗?感谢

1 个答案:

答案 0 :(得分:2)

尝试使用以下代码更改最后一行代码:
[self.mapView setRegion:[self.mapView regionThatFits:viewRegion] animated:YES];

通常,MapView无法显示您尝试设置的确切区域,因为地图不是平坦的。
来自regionThatFits方法的Apple文档:

  

调整指定区域的宽高比,以确保它适合地图视图的框架。   您可以使用此方法规范化区域值,然后在地图中显示它们。此方法返回一个新区域,该区域包含指定区域并且整齐地适合地图视图的框架内。

更新: 另一个建议是:确保地图视图宽度不超过实际屏幕宽度。在其他情况下,地图视图框架可能会超出屏幕的右边界,从而导致错误的中心点。