Android - Как узнать примерное время в пути от одного места до другого? - PullRequest
10 голосов
/ 07 декабря 2011

Мне нужно найти приблизительное время в пути от одного места до другого. У меня есть широта и долгота для обоих мест, но я не знаю, как это сделать. Есть ли какой-либо API для этого. помогите спасибо.

Ответы [ 5 ]

11 голосов
/ 07 декабря 2011

да, вы получите значение времени и расстояния, а также многие подробности о направлении движения в режиме вождения, ходьбы и т. Д.все, что вы получили от API направления Google

, проверьте наши ссылки

http://code.google.com/apis/maps/documentation/directions/

9 голосов
/ 07 декабря 2011
    Location location1 = new Location("");
    location1.setLatitude(lat);
    location1.setLongitude(long);

    Location location2 = new Location("");
    location2.setLatitude(lat);
    location2.setLongitude(long);

    float distanceInMeters = location1.distanceTo(location2);

РЕДАКТИРОВАТЬ :

    //For example spead is 10 meters per minute.
    int speedIs10MetersPerMinute = 10;
    float estimatedDriveTimeInMinutes = distanceInMeters / speedIs10MetersPerMinute;

Также обратите внимание на это, если вышеуказанное не работает для вас:

Рассчитать расстояние между двумя точкамиGoogle Maps V3

1 голос
/ 07 декабря 2011

Вы также можете использовать http://maps.google.com/maps?saddr={start_address}&daddr={destination_address}

будет указывать детали в направлении, а также расстояние и время между двумя точками

http://maps.google.com/maps?saddr=79.7189,72.3414&daddr=66.45,74.6333&ie=UTF8&0&om=0&output=kml

0 голосов
/ 20 ноября 2017

Примечание об устаревании Следующее описанное решение основано на Java-клиенте Google для Google Maps Services , который не предназначен для использования в приложении Android из-за вероятность потери ключей API (как отмечено PK Gupta в комментариях ). Следовательно, я бы больше не рекомендовал использовать его в производственных целях.


Как уже было описано в Praktik 1012 *, вы можете использовать API указаний Google, чтобы оценить время, необходимое для перехода из одного места в другое, с учетом направлений и трафика. Но вам не нужно использовать веб-API и создавать свою собственную оболочку, вместо этого используйте реализацию Java , предоставляемую самим Google, которая доступна через репозиторий Maven / gradle .

  1. Добавьте google-maps-services в build.gradle вашего приложения :

    dependencies {
        compile 'com.google.maps:google-maps-services:0.2.5'
    }
    
  2. Выполните запрос и извлеките продолжительность:

    // - Put your api key (https://developers.google.com/maps/documentation/directions/get-api-key) here:
    private static final String API_KEY = "AZ.."
    
    /**
    Use Google's directions api to calculate the estimated time needed to
    drive from origin to destination by car.
    
    @param origin The address/coordinates of the origin (see {@link DirectionsApiRequest#origin(String)} for more information on how to format the input)
    @param destination The address/coordinates of the destination (see {@link DirectionsApiRequest#destination(String)} for more information on how to format the input)
    
    @return The estimated time needed to travel human-friendly formatted
    */
    public String getDurationForRoute(String origin, String destination)
        // - We need a context to access the API 
        GeoApiContext geoApiContext = new GeoApiContext.Builder()
            .apiKey(apiKey)
            .build();
    
        // - Perform the actual request
        DirectionsResult directionsResult = DirectionsApi.newRequest(geoApiContext)
                .mode(TravelMode.DRIVING)
                .origin(origin)
                .destination(destination)
                .await();
    
        // - Parse the result
        DirectionsRoute route = directionsResult.routes[0];
        DirectionsLeg leg = route.legs[0];
        Duration duration = leg.duration;
        return duration.humanReadable;
    }
    

Для простоты этот код не обрабатывает исключения, случаи ошибок (например, маршрут не найден -> rout.length == 0), а также не использует более одного маршрута или участка . Источник и пункт назначения также могут быть установлены непосредственно как LatLng экземпляры (см. DirectionsApiRequest#origin(LatLng) и DirectionsApiRequest#destination(LatLng).

Дополнительная информация: android.jlelse.eu - API Google Maps Directions

0 голосов
/ 28 марта 2017
   Calculate Distance:-
    float distance;
            Location locationA=new Location("A");
            locationA.setLatitude(lat);
            locationA.setLongitude(lng);

            Location locationB = new Location("B");
            locationB.setLatitude(lat);
            locationB.setLongitude(lng);

            distance = locationA.distanceTo(locationB)/1000;

            LatLng From = new LatLng(lat,lng);
            LatLng To = new LatLng(lat,lng);

            Calculate Time:-
            int speedIs1KmMinute = 100;
            float estimatedDriveTimeInMinutes = distance / speedIs1KmMinute;
               Toast.makeText(this,String.valueOf(distance+
"Km"),Toast.LENGTH_SHORT).show();
            Toast.makeText(this,String.valueOf(estimatedDriveTimeInMinutes+" Time"),Toast.LENGTH_SHORT).show();
...