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

在区域更改后,我尝试了以下内容来获取MKMapView的实际可见区域.在用户旋转地图后,无生成所需结果.

>使用mapView.bounds和mapView.convertPoint获取NE和SW CLLocationCoordinate2D.
>使用mapView.visibleRect创建NE和SW MKMapPoints并将这些点转换为NE和SW CLLocationCoordinate2D.
>使用mapView.centerCoodinate和mapView.region.span纬度和经度增量来计算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获取用户实际可见的区域,考虑航向,高度和俯仰?

最佳答案 我正在寻找类似情况的答案,并找到了
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)
点赞