从我所看到的,这需要一些我不擅长的复杂数学。所以,我在这里问。
有没有人有将MKMapPoint或CLLocationCoordinate2D转换为UTM值的经验?我找到了这个资源(http://www.uwgb.edu/dutchs/usefuldata/UTMFormulas.HTM),但数学上的压力很大。
答案 0 :(得分:6)
我最近为此写了一个类,并在GitHub上发布了一个示例项目
您需要的部分是名为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
更改为地球半径的米数值。当我发现这实际上有效时,我很高兴,非常惊讶。