iOS: Come convertire o MKMapPoint CLLocationCoordinate2D a UTM?
-
26-09-2019 - |
Domanda
Da quello che ho letto questo richiede un po 'complicato per la matematica che io non sono bravo a. Quindi, chiedo qui.
Qualcuno ha esperienza la conversione di un MKMapPoint o CLLocationCoordinate2D ad un valore UTM? Ho trovato questa risorsa ( http://www.uwgb.edu/dutchs/usefuldata/UTMFormulas. HTM ), ma la matematica è schiacciante.
Soluzione
Si potrebbe utilizzare un lib per farlo, o analizzare il codice di un lib per capire l'algoritmo e fai da te.
Questa è una c ++ lib che fa il lavoro: http://geographiclib.sourceforge.net/html/
http://geographiclib.sourceforge.net/html/classGeographicLib_1_1UTMUPS.html
Ho trovato questo sito web (http://home.hiwaay.net/~taylorc/toolbox/geography/geoutm.html). Se si guarda il codice sorgente, il tutto di conversione viene fatto usando JavaScript, è possibile dare un'occhiata a esso e cercare di convertire in Obj-C.
Altri suggerimenti
Recentemente ho scritto una classe per questo e ha postato un progetto di esempio su GitHub
La parte che si desidera è un file chiamato UTMConverter.m. Ha metodi per la conversione da latitudine / longitudine a UTM e viceversa.
MKMapViewZoom
sembra avere alcuni metodi di classe che può convertire tra piatto mappa (geometrico) e curvo-mappa le coordinate geografiche (), anche se non ci sono abituato fuori. Qualcuno mi dia un pollice in alto se questo funziona davvero
//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
una certa documentazione qui
- Objective C: https://github.com/jdp -global / MKMapViewZoom / blob / master / MKMapView% 2BZoomLevel.m
- per RubyMotion: http://rubydoc.info/gems/map -KIT-wrapper / 0.0.5 / telai
UPDATE:
Questa è esasperante, ma al fine di ottenere il codice sorgente di questa classe per il lavoro con precisione ho praticamente dovuto estrarre i metodi in mio dominio essenzialmente, quindi rimuovere le parti del codice di riferimento MERCATOR_OFFSET
& cambiamento MERCATOR_RADIUS
al valore metri del il raggio della Terra. Ero un po ', ok, molto sorpreso quando ho scoperto questo effettivamente lavorate.