Исходный код для определения расстояния между двумя географическими точками

Я работаю над приложением для Android и хочу добавить информацию о местонахождении магазинов и карту. Я много искал, но ничего целенаправленного не получил. Я напряжен и очень нуждаюсь в вашей помощи.

Проблема в том, что я хочу найти расстояние между двумя координатами, у меня есть одна формула Хаверсина., Но я не знаю, как успешно запустить программу. Так как я новичок в Android, пожалуйста, помогите сделать пошаговое кодирование., т.е. также xml-код .., пожалуйста., пожалуйста.,


person mary victoria    schedule 02.11.2011    source источник
comment
Привет, в этом посте ты уловил идею. stackoverflow.com/questions/2741403 /   -  person    schedule 02.11.2011


Ответы (4)


Как указано выше, лучше всего использовать класс Location.

Вот код, который я использовал:

Location locationA = new Location("point A");  

locationA.setLatitude(pointA.getLatitudeE6() / 1E6);  
locationA.setLongitude(pointB.getLongitudeE6() / 1E6);  

Location locationB = new Location("point B");  

locationB.setLatitude(pointB.getLatitudeE6() / 1E6);  
locationB.setLongitude(pointB.getLongitudeE6() / 1E6);  

double distance = locationA.distanceTo(locationB);

В этом примере и pointA, и pointB являются экземплярами класса GeoPoint.

person Community    schedule 02.11.2011

Из фрагментов MotoDev (Расстояние между координатами GPS):

Location originLocation = new Location("gps");
Location destinationLocation = new Location("gps");
originLocation.setLatitude(originLatitude);
originLocation.setLongitude(originLongitude);
destinationLocation.setLatitude(originLatitude);
destinationLocation.setLongitude(originLongitude);
float distance = originLocation.distanceTo(destinationLocation);
person B. Clay Shannon    schedule 22.12.2011

http://developer.android.com/reference/android/location/Location.html

Смотрите в distanceTo или distanceBetween. Вы можете создать объект Location по широте и долготе:

Location location = new Location("");
location.setLatitude(lat);
location.setLongitude(lon);
person Nikunj Patel    schedule 02.11.2011

Используйте этот код. вы получите расстояние между двумя географическими точками.

 private String distance(double lati, double longi, double curlati1,
        double curlongi1) {

    double theta = longi - curlongi1;
    double dist = Math.sin(deg2rad(lati)) * Math.sin(deg2rad(curlati1))
            + Math.cos(deg2rad(lati)) * Math.cos(deg2rad(curlati1))
            * Math.cos(deg2rad(theta));
    dist = Math.acos(dist);
    dist = rad2deg(dist);
    dist = dist * 60 * 1.1515;

    dist = dist * 1.609344;

    result = Double.toString(dist);
    System.out.println("dist_result :" + result);
    return (result);
}

/* ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: */
/* :: This function converts decimal degrees to radians : */
/* ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: */
private double deg2rad(double deg) {
    return (deg * Math.PI / 180.0);
}

/* ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: */
/* :: This function converts radians to decimal degrees : */
/* ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: */
private double rad2deg(double rad) {
    return (rad * 180.0 / Math.PI);
}
person MuraliGanesan    schedule 19.01.2013