我在导航控制器中的半透明黑色导航,状态和搜索以及工具栏下都有一个“地图视图”。

地图的实际高度包括这些条下方的区域。

左侧的 + 附件按钮使地图位于Pin的中心。



左图在地图居中于图钉坐标之前。

正确的是地图位于图钉坐标的中心。

问题在于中心应该是可见地图区域的中心,而不是整个地图区域。 (这会导致图钉不会出现在地图中心。

我可以做一些偏移或边界设置,以使“地图视图”正确居中吗?

最佳答案

您可以为可见的地图区域(在导航栏下方)覆盖一个透明的UIView(tView),获取其点,计算所需的偏移量,然后再次设置setRegion。 (我猜您正在使用setRegion将地图居中):

CGPoint currentPoint = [mapView convertCoordinate:myPin.coordinate toPointToView:self.view];
CGRect tFrame = [tView frame];
tFrame.origin.y = currentPoint.y - tFrame.size.height;
tFrame.origin.x = currentPoint.x - (tFrame.size.width/2);

MKCoordinateRegion newRegion = [mapView convertRect:tFrame toRegionFromView:self.view];
[mapView setRegion:newRegion animated:YES];

您应该仔细检查tFrame,以便为您的应用程序设置最佳值。

09-07 13:29