将MKMapView相对于父视图移动到特定位置

3
我在MKMapView中添加了一些注释,当用户单击其中一个注释时,它会显示一个UICalloutView,其中包含一个正确的辅助按钮。单击该按钮将在地图上添加一个UIView,显示有关该特定位置的一些信息。这个UIView位于地图的superview中心,并且为了显示该视图中的信息与注释相关,我希望向下(在y轴上)移动可见地图矩形,并将其在x轴上居中,以使注释直接位于视图下方。
我正在执行以下操作以使注释居中,但是,我不知道如何将注释沿y轴向下移动,以使其位于添加的UIView下方。请告诉我如何做到这一点?
[self.mapView setCenterCoordinate:[annotation coordinate] animated:YES];
2个回答

8

如果您想将地图向下移动,使其以特定的坐标为中心,但要将其向下移动40%,以腾出空间放置在它上面的内容,则可以执行以下操作:

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

2

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


谢谢,使用self.view.center作为点的x坐标,x坐标方面运行良好。但是,请问y坐标方面能否澄清一下? - max_
你的目标是将地图内容向下移动,以便注释位于信息视图下方。你需要知道需要移动多远。然后计算出地图中心地理坐标。你目前正在将注释移动到中心,但这不是你所描述的需求。 - Wain

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接