Мне нужна очень точная мера местоположения GPS - PullRequest
0 голосов
/ 26 февраля 2020

У меня есть проект приложения, который я разработал, и мне нужна реализация координат 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);
}

enter image description here

1 Ответ

0 голосов
/ 27 февраля 2020

Окончательный вариант eu estava apenas errando no dois códigos эра para usar o toNumber e não o Длина азиатского пассажа o доблесть exato das coordenadas não números por quantidades

...