Мне нужно найти время для расчета с одного места на другое. У меня есть широты и долготы для обоих мест, но я понятия не имею, как это сделать. Есть ли для этого API. спасибо спасибо.
Android - Как получить примерное время от одного места к другому?
Ответ 1
да, вы получаете значение времени и расстояния, а также многие другие сведения о направлениях в режиме вождения, ходьбы и т.д. все, что вы получили от сервиса api google
проверьте наши ссылки
Ответ 2
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 V3
Ответ 3
Вы также можете использовать 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
Ответ 4
Замечание об устаревании Следующее описанное решение основано на клиенте Google Java для Google Maps Services, который не предназначен для использования в приложении Android из-за возможной потери ключей API (как отметил П.К. Гупта в комментариях). Следовательно, я бы больше не рекомендовал его использовать в производственных целях.
Как уже было сказано в Praktik, вы можете использовать API указаний Google, чтобы оценить время, необходимое для перехода из одного места в другое, с учетом направлений и трафика. Но вам не нужно использовать веб-API и создавать свою собственную оболочку, вместо этого используйте реализацию Java, предоставляемую самим Google, которая доступна через репозиторий Maven/gradle.
-
Добавьте google-maps-services в ваше приложение build.gradle:
dependencies { compile 'com.google.maps:google-maps-services:0.2.5' }
-
Выполните запрос и извлеките продолжительность:
// - Put your api key (https://developers.google.com/maps/documentation/directions/get-api-key) here: private static final String API_KEY = "AZ.." /** Use Google 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
Ответ 5
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();