Android получает расстояние, используя объект Location - PullRequest
3 голосов
/ 15 марта 2011

Я хотел бы взять серию выборок координат, возвращаемых GPS, и рассчитать расстояние (прямая линия) между ними, чтобы я мог построить график с помощью Excel. Я вижу метод distanceBetween и distanceTo класса Location, но я обеспокоен тем, что они не возвращают расстояние по прямой линии.

Кто-нибудь знает, какое расстояние возвращается этими методами или есть какие-либо способы вычисления расстояния по прямой линии на основе значений широты / долготы, возвращаемых классом Location?

Ответы [ 4 ]

2 голосов
/ 15 марта 2011

Поиск в Google предложит решения, если вы захотите сделать этот расчет самостоятельно. Например, подход Haversine:

var R = 6371; // km
var dLat = (lat2-lat1).toRad();
var dLon = (lon2-lon1).toRad(); 
var a = Math.sin(dLat/2) * Math.sin(dLat/2) +
        Math.cos(lat1.toRad()) * Math.cos(lat2.toRad()) * 
        Math.sin(dLon/2) * Math.sin(dLon/2); 
var c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1-a)); 
var d = R * c;

сообщается здесь . Обратите внимание, что это прямая линия, не учитывающая неровности высоты и т. Д.

1 голос
/ 15 марта 2011
0 голосов
/ 09 декабря 2016

Вот мой код

float[] result=new float[1];
        if(cordenatalar.size()>1)
        {

            LatLong add_kor=(LatLong)cordenatalar.get(cordenatalar.size()-1);
            Location.distanceBetween(add_kor.getLat(), add_kor.getLongg(), location.getLatitude(), location.getLongitude(), result);
            kilometr+=result[0];
            //KMTextView.setText(String.valueOf(kilometr));
        }
        KMTextView.setText("sss: "+String.valueOf(cordenatalar.size()+"  res: "+kilometr+" metr"));
        cordenatalar.add(new LatLong(location.getLatitude(), location.getLongitude()));
0 голосов
/ 31 марта 2011

источник = начальное местоположение;

пункт назначения = текущее местоположение;

/ * этот метод выведет вам расстояние между двумя географическими точками* /

source.distanceTo (destination);

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...