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

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

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

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

【问题讨论】:

    标签: ios objective-c uiview mkmapview


    【解决方案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坐标吗?
      • 您的目标是将地图内容向下移动,因此注释位于信息视图下方。您需要知道将其移动多远。然后计算出地图的中心地理坐标需要是什么。您当前正在将注释移动到中心,但这不是您所描述的。
      猜你喜欢
      • 1970-01-01
      • 2016-08-06
      • 1970-01-01
      • 1970-01-01
      • 2016-06-15
      • 2017-01-30
      • 2017-07-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多