Использование API Карт Google для получения данных о времени поездки

Все примеры, с которыми я столкнулся с помощью Google Maps api, похоже, показывают какую-то карту. Я хотел бы включить данные о предполагаемом времени поездки на машине, которую они дают вам, когда вы просите описание дороги от А до В на сайт. И только эти данные. Возможно ли без загрузки карты для конечного посетителя?

Да, это возможно с помощью API. Вы можете создать объект GDirections без карты или указателя div. Вы можете выполнить запрос нагрузки от A до B, а затем вызвать метод getDuration, чтобы получить общее время в пути.

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

// no need to pass map or results div since // we are only interested in travel time. var directions = new GDirections (); 

Затем сделайте запрос на загрузку для разрешения указаний (я использовал две широты и долготы в качестве начальной и конечной точек, но здесь вы также можете использовать адреса):

 var wp = new Array (); wp[0] = new GLatLng(32.742149,119.337218); wp[1] = new GLatLng(32.735347,119.328485); directions.loadFromWaypoints(wp); 

Затем вам нужно прослушать событие загрузки, чтобы вы могли вызвать getDuration после того, как были разрешены указания:

 GEvent.addListener(directions, "load", function() { $('log').innerHTML = directions.getDuration ().seconds + " seconds"; }); 

Здесь вы можете найти здесь весь пример и JavaScript . Вы можете проверить Документацию Google Maps для получения дополнительной информации о параметрах, которые вы можете предоставить объекту GDirections (например, пешком и т. Д.). Вы также должны прослушать событие ошибки для сбоев геокодирования.

Вышеуказанный ответ неверен – это противоречит Условиям использования API Google.

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

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

Для справки: В это время (2015 год) GDirections, GLatLng, GEvent и т. Д. Устарели.


Вы можете использовать class google.maps.DirectionsService (API Google Maps JavaScript V3)

В следующем fragmentе местоположение и цель – это объекты, содержащие координаты широты и долготы.

1) Класс google.maps.DirectionsService допускает как LatLng, так и строковые значения для подачи их исходных и целевых свойств.
2) LatLng – это точка в географических координатах: широта и долгота.

 var origin = new google.maps.LatLng( location.latitude, location.longitude ); // using google.maps.LatLng class var destination = target.latitude + ', ' + target.longitude; // using string var directionsService = new google.maps.DirectionsService(); var request = { origin: origin, // LatLng|string destination: destination, // LatLng|string travelMode: google.maps.DirectionsTravelMode.DRIVING }; directionsService.route( request, function( response, status ) { if ( status === 'OK' ) { var point = response.routes[ 0 ].legs[ 0 ]; $( '#travel_data' ).html( 'Estimated travel time: ' + point.duration.text + ' (' + point.distance.text + ')' ); } } ); 

из google.maps.DirectionsRenderer

Расстояние:

 directionsDisplay.directions.routes[0].legs[0].distance.text 

Продолжительность с использованием:

 directionsDisplay.directions.routes[0].legs[0].duration.text 
  1. сначала перейдите сюда: https://developers.google.com/maps/documentation/distance-matrix/start Вам необходимо: Создать или выбрать проект, Включить API и Получить ключ API. Просто нажмите «Получить ключ», и если у вас есть учетная запись Gmail, вы можете все уладить (или перейдите на console.developer.google.com после входа в свою учетную запись gmail, создайте приложение и включите API и получите ключ API).
  2. перейдите на страницу https://developers.google.com/maps/documentation/distance-matrix/intro и следуйте подробным сведениям. Несколько вещей, которые следует обратить внимание: используйте эти: & mode = driving & departure_time = now & traffic_model = пессимистично, если вы хотите, чтобы текущий трафик влиял на ваше время движения. Я также использовал & units = imperial

Длительность в трафике возвращается только в том случае, если выполняются все следующие условия:

Запрос включает параметр departure_time. Запрос включает в себя действительный ключ API или действительный идентификатор клиента клиента API Карт Google и подпись. Для запрашиваемого маршрута доступны условия трафика. Параметр режима настроен на вождение.

И да, вы должны отображать карту Google с указанием времени на диске. «Матричный интерфейс карты Google Maps может использоваться только в сочетании с отображением результатов на карте Google. Запрещается использовать данные API-интерфейсов карт Google Maps без отображения карты Google. ”
Не забудьте проверить: https://developers.google.com/maps/documentation/distance-matrix/usage-limits и https://developers.google.com/maps/terms для T & C’s.

Обратите внимание, что Mapquest не показывает время на диске, основанное на фактическом трафике.

У вас есть API-интерфейс для определения расстояния между картами Google в 2016 году. https://developers.google.com/maps/documentation/distance-matrix/get-api-key#key

Я боролся с этим в течение долгого времени, но, наконец, решил его с помощью вызова AJAX (убедитесь, что вы связаны с jQuery, чтобы сделать это).

  //Pass parameters to a function so your user can choose their travel locations function getCommuteTime(departLocation, arriveLocation) { //Put your API call here with the parameters passed into it var queryURL = "https://maps.googleapis.com/maps/api/distancematrix/json? units=imperial&origins=" + departLocation + "&destinations=" + arriveLocation + "&key=YOUR_API_KEY" //Ajax retrieves data from the API $.ajax({ url: queryURL, method: "GET" }).then(function(response) { //Navigate through the given object to the data you want (in this case, commute time) var commuteTime = response.rows[0].elements[0].duration.text; console.log(commuteTime) }); } //This is where your user can give you the data you need $("#addRoute").on("click", function(event) { event.preventDefault(); var departLocation = $("#departInput").val().trim(); var arriveLocation = $("#arriveInput").val().trim(); //call the above function getCommuteTime(departLocation, arriveLocation); 

});

Вы можете использовать gmapsdistance для R-пакета. Он делает именно то, что вы хотите. Он вычисляет матрицы расстояния / времени между вектором истоков и пунктов назначения и дает вам множество опций (способ транспорта, время вылета, среди многих других).

псевдокод:

  1. DirectionsService .route ({A, B}) // получаем DirectionsResult здесь

  2. проверить расстояние и продолжительность (время в пути) в DirectionsLeg .// из DirectionsResult.legs

    маршрут без путевых точек будет содержать один DirectionsLeg, так что вы хотите.

Interesting Posts

Как проверить, установлена ​​ли переменная в Bash?

Почему моя целая математика с std :: pow дает неправильный ответ?

Какое свободное программное обеспечение может преобразовывать заполняемые формы pdf в заполняемый и ** savable ** pdf?

Содержит ли сборщик мусора статические переменные или методы в java?

ItemPropertyChanged не работает на наблюдаемомколлекции.Почему?

Транзакция, отмеченная только как откат: как мне найти причину

Почему эти цифры не равны?

R управления памятью / не может выделить вектор размера n Mb

IOS 9 Error Domain = kCLErrorDomain Code = 0 “(null)”

ошибка идентификации устройства Android

Отображение Hibernate / JPA приводит к возникающим в JSF причинам: java.lang.NumberFormatException: для строки ввода: “”

Как преобразовать формат даты в vb.net?

Неизвестный процесс linux со случайной командой

простой HttpURLConnection POST-файл multipart / form-data от android до google blobstore

Java – Как подключиться к меню «Копировать и вставить» в Mac OS

Давайте будем гением компьютера.