Mam obiekt LatLng
i chcę przesunąć jego współrzędne o 500 metrów na wschód. Nie mogłem znaleźć wbudowanej metody. Widziałem https://gis.stackexchange.com/a/2964, ale moje wyniki są po prostu zbyt niedokładne (około 15%), aby można je było praktycznie zastosować. Jak mogę dokonać dokładnego przesunięcia w metrach?Przesunięcie LatLng o pewną ilość metrów w Androidzie
Uwaga: Jestem NOT szukam możliwości przesunięcia kamery Google Maps, wiem, jak to zrobić.
Próbowałem:
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;
}
Jednak, kiedy nazywają go z punktem (nie w pobliżu biegunów lub cokolwiek) o rozpiętości docelowym 5000 metrów, Dostaję dwa punkty, które są o 6170 metrów oddzielnie. Czemu?
Biblioteka pracował. Zastanawiam się, dlaczego mój kod nie działa, ale w każdym razie problem został rozwiązany. –