如何在mapkit中以像素为单位获取米?

Posted

技术标签:

【中文标题】如何在mapkit中以像素为单位获取米?【英文标题】:How to get meters in pixel in mapkit? 【发布时间】:2009-12-27 11:58:11 【问题描述】:

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

得到一些帮助会很棒:)

非常感谢。

【问题讨论】:

【参考方案1】:

查看MKCoordinateSpan 的文档,它是地图的region 属性的一部分。一个纬度总是大约。 111 公里,因此将latitudeDelta 转换为米,然后得到每像素的米应该很容易。对于经度值来说,它并不是那么容易,因为一个经度所覆盖的距离在 111 公里(赤道)和 0 公里(两极)之间变化。

【讨论】:

【参考方案2】:

我获得每像素米的方法:

MKMapView *mapView = ...;
CLLocationCoordinate2D coordinate = ...;

MKMapRect mapRect = mapView.visibleMapRect;
CLLocationDistance metersPerMapPoint = MKMetersPerMapPointAtLatitude(coordinate.latitude);

CGFloat metersPerPixel = metersPerMapPoint * mapRect.size.width / mapView.bounds.size.width;

【讨论】:

【参考方案3】:

为了补充另一个答案,一分钟的纬度差异对应于一海里:这就是海里的定义方式。因此,换算成法定英里,1 海里 = 1.1508 英里,即 6076.1 英尺或 1852 米。

当您选择经度时,地球周围的经度圈的大小会随着纬度的增加而缩小,如上一个答案所述。正确的因素是

1 minute of longitude = (1852 meters)*cos(theta),

theta 是纬度。

当然,地球不是一个完美的球体,但上面的简单计算误差永远不会超过 1%。

【讨论】:

以上是关于如何在mapkit中以像素为单位获取米?的主要内容,如果未能解决你的问题,请参考以下文章

如何在android java中以像素为单位设置ImageView的边距?

如何在 PHP 中以毫秒为单位获取当前时间?

如何在PHP中以分钟为单位获取时差

如何在jquery中以秒为单位获取两个日期之间的差异?

如何在 Python 3 中以纳秒为单位获取时间戳? [复制]

如何在 Ruby 中以毫秒为单位计时?