将MKMapView移动到相对于superview的特定位置

时间:2013-07-21 18:31:12

标签: ios objective-c uiview mkmapview

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

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

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

2 个答案:

答案 0 :(得分:6)

如果您想将地图向下移动以使其以特定的coordinate为中心,但是将其向下移动,比如40%,那么您可以在其上方留出空间,您可以执行以下操作:

CLLocationCoordinate2D center = coordinate;
center.latitude -= self.mapView.region.span.latitudeDelta * 0.40;
[self.mapView setCenterCoordinate:center animated:YES];

答案 1 :(得分:2)

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