У меня есть проект приложения, который я разработал, и мне нужна реализация координат GPS, которая будет рассчитываться из 2 точек по широте и долготе. Мне действительно нужен хороший и очень точный расчет в метрах в километрах на основе этой цифры впереди = 0,00000, но проблема в том, что у меня было другое приложение, которое идеально рассчитывало все расстояния, удаленные от точки, например, когда я сохранял свою текущую позицию и началось вычисление начального местоположения как широта 1, долгота 1 от широта 2, долгота 2, он дал мне этот результат 0,00001 на основе одного сантиметра, вычисляя очень близко от того места, где я находился, или 0,01000, если я был на расстоянии около 10 метров, поэтому, если бы я был на расстоянии 10 метров с моей позиции он отображал 0,01000, когда 50 "0,05000 и когда 100 метров 0,10000 и 1 км =" 1,00000, и 1,500 = 1,50000, или 1,550 км = 1,55000 и т. д., используя формулу сбора урожая, которая мне нужна в этом проекте с учетом Земли радиус 6371.0, поэтому, пожалуйста, помогите мне, как я могу реализовать эту правильную меру с простым кодом для приложения Android, которое будет отображаться в кнопке просмотра текста, как вы видите на изображении моего приложения. Код ниже дает противоположную меру как 567028.0, так что я не ожидаю.
public static double distance(double lat1, double lat2, double lon1,
double lon2, double el1, double el2) {
final int R = 6371; // Radius of the earth
double latDistance = Math.toRadians(lat2 - lat1);
double lonDistance = Math.toRadians(lon2 - lon1);
double a = Math.sin(latDistance / 2) * Math.sin(latDistance / 2)
+ Math.cos(Math.toRadians(lat1)) * Math.cos(Math.toRadians(lat2))
* Math.sin(lonDistance / 2) * Math.sin(lonDistance / 2);
double c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));
double distance = R * c * 1000; // convert to meters
double height = el1 - el2;
distance = Math.pow(distance, 2) + Math.pow(height, 2);
return Math.sqrt(distance);
}