iphone - iOS: ¿Cómo convertir MKMapPoint o CLLocationCoordinate2D a UTM?
geolocation mapkit (3)
Por lo que he leído esto requiere algunas matemáticas complicadas en las que no soy bueno. Entonces, estoy preguntando aquí.
¿Alguien tiene experiencia en convertir un MKMapPoint o CLLocationCoordinate2D en un valor UTM? Encontré este recurso ( http://www.uwgb.edu/dutchs/usefuldata/UTMFormulas.HTM ) pero la matemática es abrumadora.
Puede usar una lib para hacer eso, o analizar el código de una lib para entender el algoritmo y hacerlo usted mismo.
Esta es una biblioteca de c ++ que hace el trabajo: http://geographiclib.sourceforge.net/html/
http://geographiclib.sourceforge.net/html/classGeographicLib_1_1UTMUPS.html
Encontré este sitio web (http://home.hiwaay.net/~taylorc/toolbox/geography/geoutm.html). Si miras el código fuente, toda la conversión se hace usando JavaScript, puedes echarle un vistazo e intentar convertir a Obj-c.
Hace poco escribí una clase para esto y publiqué un proyecto de muestra en GitHub
Ejemplo de UTMConverter para iOS
La parte que desea es un archivo llamado UTMConverter.m. Tiene métodos para convertir lat / long a UTM y viceversa.
Parece que MKMapViewZoom
tiene algunos métodos de clase que pueden convertir entre coordenadas de mapa plano (geométricas) y de mapa curvo (geográficas), aunque no las he probado. Alguien me da un pulgar hacia arriba si esto realmente funciona
//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
alguna documentación aquí
- Objetivo C: https://github.com/jdp-global/MKMapViewZoom/blob/master/MKMapView%2BZoomLevel.m
- para RubyMotion: http://rubydoc.info/gems/map-kit-wrapper/0.0.5/frames
ACTUALIZAR:
Esto es enloquecedor, pero para lograr que el código fuente de esta clase funcione correctamente, básicamente tuve que extraer los métodos en mi propio dominio, luego eliminé las partes del código que hacía referencia a MERCATOR_OFFSET
y cambiaba MERCATOR_RADIUS
al valor de metros del radio de la Tierra. Estaba algo así como, ok, muy sorprendido cuando descubrí que esto realmente funcionó.