Bewegen ein CLLocation von x Metern
Habe ich ein CLLocation definiert, und ich möchte zu bewegen, dass der Punkt x Meter nach Osten und y Meter nach Süden. Wie kann ich das erreichen?
- Beachten Sie, dass Sie nicht immer verschieben Nord/Süd aus alle Punkte auf dem Globus-zum Beispiel, wenn Sie auf den Nordpol, kann man nur nach Süden gehen. Was versuchst du hier zu tun?
- Es einfach zu machen, ich will meine userPos 100 Schritt nach rechts, und 100 Schritt zurück 🙂
Du musst angemeldet sein, um einen Kommentar abzugeben.
Gibt es eine C-Funktion, die in der Nähe zu dem, was Sie Fragen, aber es dauert eine Peilung und Entfernung. Es ist in meinen UtilitiesGeo Klasse auf github. Würde man der breiten-und Längengrad von Ihrem CLLocation und erstellen Sie dann eine neue CLLocation aus der resultierenden lat2 und lon2, die es gibt:
Wenn Sie nicht verwenden können, dass, werfen Sie einen Blick auf die algorithmen, die es abgeleitet wurde hier und hier und vielleicht können Sie es ändern oder diese Seiten vielleicht etwas näher an Ihre Bedürfnisse.
Dass die Umstellung auf Swift, entnommen diese Antwort:
Toller post, hier ist die Obj-C-wrapper für diejenigen, die gerne copy/paste:
Verbesserten swift-Lösung zu Peters Antwort. Nur Korrektur der Haltung sollte radian während der Berechnung vorgenommen wurde.
Leichte Anpassung an @CocoaChris Antwort: nun eine Kategorie auf CLLocation, und mit der eingebauten Einheiten.
Rasche Umsetzung mit
Measurement
Struktur zu tun, die Umrechnungen zwischen Grad-und Bogenmaß.Eine einfachere Lösung ist die Verwendung MKMapPoints.
Konvertieren Sie Ihre ursprünglichen Koordinaten, und eine offset Entfernungen, die Sie benötigen, um MKMapPoints mit diesem:
Dann eine neue MKMapPoint, indem Sie einfach Ihre offset-Abstände zu Ihren ursprünglichen Koordinaten:
Schließlich, konvertieren Sie die neuen Koordinaten von einem MKMapPoint zurück zu CLLocationCoordinate2D:
Ohne aufwändige Umrechnung nötig.
Swift 4.2 als CGPoint Erweiterung
Abgeleitet von Peter O. s-Lösung
Fließkomma-Erweiterung: Dank https://stackoverflow.com/a/29179878/2500428
Verwendung:
Swift 4
Nutzung
Seltsam, dass niemand daran gedacht, mit MKCoordinateRegion von MapKit das automatisch ausrechnen.