3

我在 MKMapView 中添加了一些注释,当用户单击其中一个注释时,它会显示一个带有右附件按钮的 UICalloutView,该按钮将 UIView 添加到地图中,显示有关该特定位置的一些信息。这个 UIView 在地图的超级视图中居中,为了显示该视图中的信息是相对于注释的,我想将可见地图 rect 向下移动(在 y 轴上),并将其居中在x 轴,以便注释直接位于视图下方。

我正在执行以下操作以使注释居中,但是,我不知道如何将注释在 y 轴上向下移动,使其位于添加的 UIView 下方。请你能告诉我我该怎么做吗?

[self.mapView setCenterCoordinate:[annotation coordinate] animated:YES];
4

2 回答 2

7

如果您想将地图向下移动,使其以特定的 为中心coordinate,但将其向下移动,例如 40%,以便在其上方有空间放置某些东西,您可以执行以下操作:

CLLocationCoordinate2D center = coordinate;
center.latitude -= self.mapView.region.span.latitudeDelta * 0.40;
[self.mapView setCenterCoordinate:center animated:YES];
于 2013-07-21T19:33:12.637 回答
2

您可以获取信息视图的大小,然后您就知道要使用多少地图(基于其大小与地图视图大小之间的差异)。现在您知道了偏移量,您可以计算应该移动到中心的点(在视图坐标系中),以便注释向下移动)。然后您可以使用convertPoint:toCoordinateFromView:找到该点的坐标以使用setCenterCoordinate:animated:

于 2013-07-21T18:44:23.877 回答