微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

从给定 MKMapView 的当前边界获取纬度/经度的大小 更新

如何解决从给定 MKMapView 的当前边界获取纬度/经度的大小 更新

Apple 开发人员文档谈到了获取当前显示的地图可见部分时的 "map points"

什么是地图点?它与纬度/经度度数有何关系?

解决方法

什么是地图点?

来自 MKMapPoint 文档 -

如果您将地球的曲面投影到平面上,您将得到一个二维版本的地图,其中的经线看起来是平行的。此类地图通常用于一次性显示地球的整个表面。 MKMapPoint 数据结构表示该二维地图上的一个点。

地图点的实际单位与用于绘制 MKMapView 内容的底层单位相关联,但您无需直接担心这些单位。映射点主要是为了简化在曲面上使用坐标值会很复杂的计算。通过转换为地图点,您可以在平面上执行这些计算,这通常要简单得多,然后根据需要转换回来。 您可以使用 init(_:) 和坐标函数在坐标值和地图点之间进行映射。

将地图相关数据保存到文件时,应始终保存坐标值(纬度和经度)而不是地图点。

它与纬度/经度度数有何关系?

您可以使用 MKMapPoint 值创建新的 CLLocationCoordinate2D 实例(可以使用 latitudelongitude 值创建。)参见 - MKMapPoint.init(_ coordinate:)


对于 get the visible portion of the map that is currently displayed 部分,您可以使用 -

MKMapView 实例询问此信息
  1. MKMapView.region

  2. MKMapView.visibleMapRect


更新

以下是计算 latitudelongitude 的最小值/最大值的方法。

let region = mapView.region
let center = region.center
let span = region.span
let minLatitude = (center.latitude - span.latitudeDelta/2)
let maxLatitude = (center.latitude + span.latitudeDelta/2)
let minLongitude = (center.longitude - span.longitudeDelta/2)
let maxLongitude = (center.longitude + span.longitudeDelta/2)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。