我想测试 mapKit 并想制作自己的叠加层来显示我的位置的准确性。如果我有一个例如 0.005 的缩放因子,我周围的圆圈必须有哪个半径(如果我的精度是例如 500m)?
得到一些帮助会很棒:)
非常感谢。
我想测试 mapKit 并想制作自己的叠加层来显示我的位置的准确性。如果我有一个例如 0.005 的缩放因子,我周围的圆圈必须有哪个半径(如果我的精度是例如 500m)?
得到一些帮助会很棒:)
非常感谢。
为了补充另一个答案,一分钟的纬度差异对应于一海里:这就是海里的定义方式。因此,转换为法定英里,1 海里 = 1.1508 英里,或 6076.1 英尺或 1852 米。
当你去经度时,地球周围的经度圈的大小随着纬度的增加而缩小,正如前面的答案所指出的那样。正确的因素是
1 minute of longitude = (1852 meters)*cos(theta),
其中theta是纬度。
当然,地球不是一个完美的球体,但上面的简单计算永远不会超过 1%。
查看 的文档MKCoordinateSpan
,它是地图region
属性的一部分。一个纬度总是大约。111 公里,因此将单位转换latitudeDelta
为米,然后转换为每像素的米应该很容易。对于经度值,它并不那么容易,因为一个经度所覆盖的距离在 111 公里(赤道)和 0 公里(两极)之间变化。
我获得每像素米的方法:
MKMapView *mapView = ...;
CLLocationCoordinate2D coordinate = ...;
MKMapRect mapRect = mapView.visibleMapRect;
CLLocationDistance metersPerMapPoint = MKMetersPerMapPointAtLatitude(coordinate.latitude);
CGFloat metersPerPixel = metersPerMapPoint * mapRect.size.width / mapView.bounds.size.width;