MKMapView 中心坐标不准确

MKMapView centerCoordinate not exact

当我尝试使用 MKMapView 的 centerCoordinate 将图钉放置在地图中心时,它大致将图钉放置在中心,但它位于真正中心以南的几个像素处地图。

我尝试将地图的中心点转换为坐标 MKMapView.convertPoint(MKMapView.center) 并且在 ios8 上完美运行,但在 ios7 上仍然关闭(现在它的南部和西部真正的中心)。

谁知道如何确定中心坐标"off"以便我可以调整?

我需要这个,因为我在地图上放置了一个十字准线图像,并且需要图钉出现在十字准线的中心。我已经用尺子验证了十字准线在地图上居中,这是关闭的图钉。

嗯,我仍然不知道为什么 iOS7 MKMapView.convertPoint(MKMapView.center) 与 MKMapView.center 坐标不同,但确实弄清楚了为什么 .centerCoordinate 关闭了。

部分地图在状态栏下方,我根据可见部分定中心,并以可见部分为中心叠加图像,但地图计算中心基于整个地图。所以一旦我修复了状态栏下的地图而不是 运行

中,您修复了一种特殊情况,即中心坐标似乎已关闭,但实际上并非如此,因为它只是被状态栏部分遮挡了。不幸的是,事情并不那么简单。还有其他边缘情况,其中中心坐标实际上可以稍微偏移。 (当我更改地图视图的框架时,我会注意到它,因为键盘出现然后又被关闭。)这是一个奇怪的小地图视图特性。

Anyone know how to determine how "off" the center coordinate is so I can adjust?

是的,只需将 centerCoordinate 转换为 CGPoint 并与 center 进行比较。唯一的技巧是确保您在相同的坐标系中执行这些操作(在下面的示例中,地图视图的坐标系):

func adjustOverlayCenterYConstraint() {
    let mapCenter = mapView.convert(mapView.centerCoordinate, toPointTo: mapView)
    let viewCenter = mapView.superview!.convert(mapView.center, to: mapView)

    overlayCenterYConstraint.constant = mapCenter.y - viewCenter.y
}

在这个例子中,我有一个centerY约束,我正在调整它的constant,但它说明了如何以编程方式确定中心是否偏移一点以及如何调整的想法它。理论上,您可能还需要调整 x 坐标,但想法是一样的。


你说:

is still off (now its south and west of the true center)

如果它既偏南又偏西,那么问题很可能只是坐标系的问题。请记住,centersuperview 的坐标系中,因此请确保转换为一致的坐标系(在地图视图的 superview 坐标系中获取 coordinateCenter 和与 center 进行比较,或者在地图视图的坐标系中获取两者,如上所示)。