iOS:如何将MKMapPoint或CLLocationCoordinate2D转换为UTM?

时间:2010-11-18 21:30:01

标签: iphone geolocation mapkit cllocationmanager utm

从我所看到的,这需要一些我不擅长的复杂数学。所以,我在这里问。

有没有人有将MKMapPoint或CLLocationCoordinate2D转换为UTM值的经验?我找到了这个资源(http://www.uwgb.edu/dutchs/usefuldata/UTMFormulas.HTM),但数学上的压力很大。

3 个答案:

答案 0 :(得分:6)

我最近为此写了一个类,并在GitHub上发布了一个示例项目

UTMConverter example for iOS

您需要的部分是名为UTMConverter.m的文件。它有从lat / long转换为UTM的方法,反之亦然。

答案 1 :(得分:2)

您可以使用一个lib来执行此操作,或者分析一个lib的代码以了解算法并自行完成。

这是一个完成工作的c ++ lib:http://geographiclib.sourceforge.net/html/

http://geographiclib.sourceforge.net/html/classGeographicLib_1_1UTMUPS.html

我找到了这个网站(http://home.hiwaay.net/~taylorc/toolbox/geography/geoutm.html)。如果您查看源代码,整个转换是使用JavaScript完成的,您可以查看它并尝试转换为Obj-c。

答案 2 :(得分:1)

MKMapViewZoom似乎有一些类方法可以在平面图(几何)和&之间进行转换。弯曲地图(地理)坐标,虽然我没有测试它们。如果这确实有效,有人会竖起大拇指

//convert from WGS84 (geographic coordinates) to UTM (geometric coordinates)
+ (double)longitudeToPixelSpaceX(double)pixelX
+ (double)latitudeToPixelSpaceY(double)pixelY

//convert from UTM to WGS84
+ (double)pixelSpaceXToLongitude(double)longitude
+ (double)pixelSpaceYToLatitude(double)latitude

这里的一些文档

更新:

这很令人抓狂,但为了让这个类的源代码准确工作,我基本上必须将方法提取到我自己的域中,然后删除引用MERCATOR_OFFSET&的代码部分。将MERCATOR_RADIUS更改为地球半径的米数值。当我发现这实际上有效时,我很高兴,非常惊讶。