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

Posted

技术标签:

【中文标题】将 MKMapView 移动到相对于 superview 的特定位置【英文标题】:Moving an MKMapView to a specific location relative to the superview 【发布时间】:2013-07-21 18:31:12 【问题描述】:

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

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

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

【问题讨论】:

【参考方案1】:

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

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

【讨论】:

【参考方案2】:

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

【讨论】:

谢谢,在 x 坐标上工作正常,点的 x 为 self.view.center。但是,你能澄清一下y坐标吗? 您的目标是将地图内容向下移动,因此注释位于信息视图下方。您需要知道将其移动多远。然后计算出地图的中心地理坐标需要是什么。您当前正在将注释移动到中心,但这不是您所描述的。

以上是关于将 MKMapView 移动到相对于 superview 的特定位置的主要内容,如果未能解决你的问题,请参考以下文章

将 MkMapView 移动到 TableViewCell 后,SetRegion 停止工作

如何将 MKCircleView 的一个位置移动到 MKMapView 中的另一个位置?

iOS - 当我将方法移动到另一个类时,MKMapView 覆盖不会呈现

当用户移动地图时,停止 MKMapView 移动到用户的当前位置

在 UIView(不是 MKMapView)中使用 lat/long 的最佳实践

MKMapView 自动移动注释 - 为它们设置动画?