当mapView为3D时,iOS MapKit获取MKMapView的实际可见区域

Posted

技术标签:

【中文标题】当mapView为3D时,iOS MapKit获取MKMapView的实际可见区域【英文标题】:iOS MapKit get actual visible area of MKMapView when mapView is 3D 【发布时间】:2014-11-13 23:49:01 【问题描述】:

在区域更改后,我尝试了以下方法来获取 MKMapView 的实际可见区域。 在用户旋转地图后,都没有产生所需的结果。

    使用mapView.bounds 和mapView.convertPoint 获取NE 和SW CLLocationCoordinate2D。 使用 mapView.visibleRect 创建 NE 和 SW MKMapPoints 并将这些点转换为 NE 和 SW CLLocationCoordinate2D。 使用mapView.centerCoodinate和mapView.region.span经纬度delta计算NE和SW经纬度,然后用于新的NE和SW CLLocationCoordinate2D。

#1 and #2 come from this post,在用户旋转地图之前,这 3 个都可以正常工作,这会通过改变其标题来发挥 mapView.camera 的作用。一旦发生这种情况,mapView.visibleRect 与实际可见区域不匹配。我敢肯定,改变高度和音高也会有类似的问题。我理解为什么 MKMapView 上的属性一旦变为 3D 就没有意义,但我不知道如何解释 mapView.camera。在对this post 中提出的答案之一的评论中提到了这一点,但没有提供解决方案。

我的问题是,如何通过 mapView.camera 获取用户实际可见的区域,并考虑航向、高度和俯仰角? p>

【问题讨论】:

【参考方案1】:

我正在寻找类似情况的答案,并找到了this。对于我的项目,我解决了如下问题。希望这会有所帮助。

    let northWestCoordinate = self.mapView.convert(CGPoint(x: 0, y: 0), toCoordinateFrom: self.mapView)
    let southEastCoordinate = self.mapView.convert(CGPoint(x: self.mapView.frame.size.width, y: self.mapView.frame.size.height), toCoordinateFrom: self.mapView)

【讨论】:

以上是关于当mapView为3D时,iOS MapKit获取MKMapView的实际可见区域的主要内容,如果未能解决你的问题,请参考以下文章

无法更改图钉 iOS MapKit 的颜色

iOS MapKit 与CLLocation 获取的位置不同

iOS MapKit更改mapview maptype会导致注释图像更改为pin?

iOS开发学习之MapKit

iOS开发学习之MapKit - 获得在MapView(地图)中显示多个标记的区域(MKCoordinateRegion)

具有集群的 mapView(_:didAdd:) 中的 MapKit 运行时错误