2009-06-25 2 views
30

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

ответ

18

Да, это возможно, используя 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"; 
     }); 

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

+0

теперь предположим, что у меня есть kml-файл с 50 точками в нем. Я хотел бы получить время в пути между всеми этими пунктами, что вы рекомендуете мне делать? – dassouki

+0

Ссылка больше не работает! – Prachi

+0

Это, по-видимому, дает время вождения при идеальных условиях движения (игнорируя текущие условия). Результаты идентичны независимо от времени отправления. – user3667349

19

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

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

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

+6

Ссылка на эти данные будет очень полезной для всех читателей. – Boeckm

+2

Это 10.1 (g) в разделе Ограничения лицензии: https://developers.google.com/maps/terms – hurrymaplelad

+3

Какой из них был бы правильным способом? – Alvaro

-3

псевдокод:

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

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

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

18

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


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

В следующем фрагменте кода местоположения и цели являются объекты, содержащие координаты широты и долготы.

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 + ')'); 
    } 
}); 
3

из google.maps.DirectionsRenderer

Расстояние с помощью:

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

Длительность помощью:

directionsDisplay.directions.routes[0].legs[0].duration.text 
+0

Это, по-видимому, дает время движения в идеальных условиях движения (игнорируя текущие условия). Результаты идентичны независимо от времени отправления. – user3667349

-2

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

3
  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 = пессимистический, если вы хотите, чтобы текущий трафик влиял на ваше время движения. Я также использовал & единиц = имперские

Продолжительность трафика возвращается только если все из следующих условий:

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

И да, вы должны отображать карту Google с указанием времени на диске. «Матрица API расстояний 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-х годов.

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

1

Я долгое время боролся с этим, но, наконец, решил его с помощью вызова 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); 

});

Смежные вопросы