iOS:如何将 MKMapPoint 或 CLLocationCooperative2D 转换为 UTM?
-
26-09-2019 - |
题
根据我的阅读,这需要一些我不擅长的复杂数学。所以,我在这里问。
有人有将 MKMapPoint 或 CLLocationCooperative2D 转换为 UTM 值的经验吗?我找到了这个资源(http://www.uwgb.edu/dutchs/usefuldata/UTMFormulas.HTM)但是数学是压倒性的。
解决方案
您可以使用一个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。
其他提示
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
这里有一些文档
- 目标C: https://github.com/jdp-global/MKMapViewZoom/blob/master/MKMapView%2BZoomLevel.m
- 对于 RubyMotion: http://rubydoc.info/gems/map-kit-wrapper/0.0.5/frames
更新:
这很令人抓狂,但是为了让这个类的源代码准确工作,我基本上必须将方法提取到我自己的域中,然后删除引用的代码部分 MERCATOR_OFFSET
& 改变 MERCATOR_RADIUS
为地球半径的米值。当我发现这确实有效时,我感到非常惊讶。
不隶属于 StackOverflow