如何在mapkit中获取像素?

时间:2009-12-27 11:58:12

标签: iphone size mapkit core-location

我想测试mapKit,并想制作我自己的叠加层来显示我的位置的准确性。 如果我有一个缩放因子,例如.005,我的圆周就必须有半径(如果我的精度是例如500米)?

获得一些帮助会很棒:)

非常感谢。

3 个答案:

答案 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;