Ich arbeite mit Google Maps SDK für iOS.Moving GMSMarker von X-Meter dividiert
Mein Projekt erfordert die Möglichkeit, die aktuelle Positionsmarkierung entlang des vorgegebenen Pfads, der in die Kartenansicht gezeichnet wird, um x Meter zu verschieben. Deshalb habe ich die folgende Methode aus this question (die Antwort von Koray Birand) umgesetzt:
func distance(distance: Double, AwayFromCoordinate origin: CLLocationCoordinate2D, WithBearing bearing: Double) -> CLLocationCoordinate2D {
let earthRadius = 6372797.6 // in meters
let radianDistance = distance/earthRadius
let radianBearing = bearing * M_PI/180.0
let latitude = origin.latitude * M_PI/180
let longitude = origin.longitude * M_PI/180
let lat2 = asin(sin(latitude) * cos(radianDistance) + cos(latitude) * sin(radianDistance) * cos(radianBearing))
let lon2 = longitude + atan2(sin(radianBearing) * sin(radianDistance) * cos(latitude), cos(radianDistance) - sin(longitude) * sin(lat2))
return CLLocationCoordinate2DMake(lat2 * 180/M_PI, lon2 * 180/M_PI)
}
Also, wenn ich das obige Verfahren wie das nennen folgende:
currentLocationMarker.position = distance(0.5, AwayFromCoordinate: currentLocationMarker.position, WithBearing: bearing)
Daraus ergibt sich mir eine neue Stelle 0,5 Meter vom aktuellen Standort entfernt.
Allerdings gibt es ein kleines Problem, dass die Bewegung wie unten noch ein wenig abzulenken beginnt, obwohl der Ausgangspunkt der gleiche ist:
ich konnte nicht herausfinden, warum eine solche Ablenkung geschieht und geht nicht geradeaus. Irgendwelche Ideen?