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