iOS: Cómo convertir MKMapPoint o CLLocationCoordinate2D a UTM?
-
26-09-2019 - |
Pregunta
A partir de lo que he leído esto toma algo de matemáticas complicadas que no soy bueno. Por lo tanto, estoy pidiendo aquí.
¿Alguien tiene experiencia convertir un MKMapPoint o CLLocationCoordinate2D a un valor UTM? He encontrado este recurso ( http://www.uwgb.edu/dutchs/usefuldata/UTMFormulas. HTM ) pero la matemática es abrumadora.
Solución
Se puede utilizar uno lib a hacer eso, o analizar el código de una lib de entender el algoritmo y hacerlo usted mismo.
Este es un C ++ lib que hace el trabajo: http://geographiclib.sourceforge.net/html/
http://geographiclib.sourceforge.net/html/classGeographicLib_1_1UTMUPS.html
He encontrado este sitio web (http://home.hiwaay.net/~taylorc/toolbox/geography/geoutm.html). Si nos fijamos en el código fuente, toda la conversión se realiza usando JavaScript, puede echar un vistazo a él y tratar de convertir a Obj-C.
Otros consejos
Me escribió recientemente una clase para esto y ha publicado un proyecto de ejemplo en GitHub
La parte que desea es un archivo llamado UTMConverter.m. Se dispone de métodos para la conversión de latitud / longitud a UTM y viceversa.
MKMapViewZoom
parece tener algunos métodos de la clase que puede convertir entre-mapa plana (geométrica) y curvo-mapa coordenadas (geográficas), aunque no los he probado a cabo. Alguien me da un pulgar hacia arriba si esto funciona realmente
//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-envoltura / 0.0.5 / marcos
ACTUALIZACIÓN:
Este es enloquecedor, pero con el fin de obtener el código fuente de esta clase para el trabajo con precisión que básicamente tuvo que extraer los métodos en mi propio dominio, esencialmente, a continuación, quitar las partes del código de referencia MERCATOR_OFFSET
y cambio MERCATOR_RADIUS
al valor metros de la radio de la tierra. Estaba un poco, bueno, muy sorprendido cuando descubrí este efectivamente trabajadas.