Ich habe ein LatLng
Objekt und ich möchte seine Koordinaten 500 Meter nach Osten verschieben. Ich konnte dafür keine integrierte Methode finden. Ich habe https://gis.stackexchange.com/a/2964 gesehen, aber meine Ergebnisse sind einfach zu ungenau (ca. 15%) praktisch zu verwenden. Wie kann ich eine genaue Verschiebung in Metern vornehmen?Offset LatLng durch eine gewisse Anzahl von Metern in Android
Hinweis: Ich bin NICHT Suche nach Verschiebung einer Google Maps-Kamera, ich weiß, wie das geht.
Ich habe versucht:
static final double KILOMETERS_PER_DEGREE = 111.111;
static LatLng offsetLongitude(LatLng initialCoords, float horizontalOffsetInMeters){
double degreeOffset = 1.0/KILOMETERS_PER_DEGREE * horizontalOffsetInMeters/1000.0;
double longitudeOffset = Math.cos(initialCoords.latitude * Math.PI/180.0) * degreeOffset;
return new LatLng(initialCoords.latitude, initialCoords.longitude + longitudeOffset);
}
public static LatLngBounds boundsForSpanWidth(LatLng midpoint, float targetSpanWidth){
LatLng east = offsetLongitude(midpoint, -targetSpanWidth);
LatLng west = offsetLongitude(midpoint, targetSpanWidth);
LatLngBounds newBounds = new LatLngBounds(west, east);
return newBounds;
}
Allerdings, wenn ich es mit einem Punkt nennen (nicht in der Nähe Pole oder irgendetwas) mit einer Zielspanne von 5000 Metern, erhalte ich zwei Punkte, die im Begriff sind, 6170 Meter auseinander. Warum?
Bibliothek gearbeitet. Ich frage mich, warum mein Code nicht funktionierte, aber trotzdem, Problem gelöst. –