iOS: Wie MKMapPoint oder CLLocationCoordinate2D zu UTM-Format konvertieren?
-
26-09-2019 - |
Frage
Von dem, was ich gelesen habe, dies dauert einige komplizierte Mathe, dass ich nicht gut. Also, ich bitte hier.
Hat jemand Erfahrung eine MKMapPoint oder CLLocationCoordinate2D zu einem UTM-Wert konvertieren? Ich fand diese Ressource ( http://www.uwgb.edu/dutchs/usefuldata/UTMFormulas. HTM ), aber die Mathematik ist überwältigend.
Lösung
Sie könnten eine lib verwenden, das zu tun, oder den Code eines lib analysieren den Algorithmus zu verstehen und es selbst zu tun.
Dies ist ein c ++ lib dass der Job nicht: http://geographiclib.sourceforge.net/html/
http://geographiclib.sourceforge.net/html/classGeographicLib_1_1UTMUPS.html
Ich fand diese Website (http://home.hiwaay.net/~taylorc/toolbox/geography/geoutm.html). Wenn Sie sich den Quellcode schauen, wird die gesamte Umwandlung mit Hilfe von JavaScript getan, können Sie einen Blick auf sie haben und versuchen, Obj-c zu konvertieren.
Andere Tipps
Ich habe vor kurzem eine Klasse für diese geschrieben und veröffentlicht ein Beispielprojekt auf GitHub
Der Teil, den Sie wollen, ist eine Datei mit dem Namen UTMConverter.m. Es hat Methoden zur Umwandlung von lat / UTM lang und umgekehrt.
MKMapViewZoom
erscheint einige Klassenmethoden zu haben, die zwischen flachen Karte (geometrische) & gekrümmt-Karte (geografische) Koordinaten umwandeln kann, obwohl ich sie nicht getestet werden. Jemand geben Sie mir einen Daumen nach oben, wenn dies tatsächlich funktioniert
//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
einige Dokumentation hier
- Objective C: https://github.com/jdp -global / MKMapViewZoom / Blob / Master / MKMapView% 2BZoomLevel.m
- für RubyMotion: http://rubydoc.info/gems/map -Kit-Wrapper / 0.0.5 / Frames
UPDATE:
Dies ist zum Verrücktwerden, sondern um Klasse dieser Quellcode zur Arbeit zu kommen genau im Wesentlichen, hatte ich im Grunde die Methoden in meine eigene Domain zu extrahieren und entfernen Sie die Teile des Codes Referenzierung MERCATOR_OFFSET
& Change MERCATOR_RADIUS
auf den Meter Wert der Erdradius. Ich war irgendwie, ok, sehr überrascht, als ich entdeckte dies tatsächlich funktioniert.