Tôi có một đối tượng LatLng
và tôi muốn thay đổi tọa độ của nó 500 mét về phía đông. Tôi không thể tìm thấy một phương pháp tích hợp cho điều đó. Tôi đã nhìn thấy https://gis.stackexchange.com/a/2964 nhưng kết quả của tôi chỉ là quá không chính xác (khoảng 15%) để sử dụng thực tế. Làm thế nào tôi có thể thực hiện một sự thay đổi chính xác trong mét?Bù đắp LatLng bởi một số lượng mét trong Android
Lưu ý: Tôi là KHÔNG tìm cách chuyển máy ảnh Google Maps, tôi biết cách thực hiện điều đó.
Tôi đã thử:
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;
}
Tuy nhiên, khi tôi gọi nó với một điểm (không gần cực hoặc bất cứ điều gì) với một nhịp mục tiêu 5000 mét, tôi nhận được hai điểm mà khoảng 6170 mét cách nhau. Tại sao?
Thư viện làm việc. Tôi tự hỏi tại sao mã của tôi không hoạt động nhưng dù sao, vấn đề đã được giải quyết. –