Вопрос по api – Использование Google Maps API для получения данных о времени в пути [закрыто]

32

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

Ваш Ответ

7   ответов
22

above answer вviolation изУсловия использования Google API, и поэтому,incorrect.

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

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

Update:

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

Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded
Error: User Rate Limit Exceededdevelopers.google.com/maps/terms
Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded
-3

DirectionsService.route({A,B}) //get a DirectionsResult here

check distance and duration(travel time) in the DirectionsLeg.//from DirectionsResult.legs

a route with no waypoints will contain one DirectionsLeg, so that's what you want.

Error: User Rate Limit ExceededPEER PRESSURE
18

For the record: В настоящее время (2015 год) GDirections, GLatLng, GEvent и т. Д.deprecated.

Ты можешь использоватькласс google.maps.DirectionsService (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
first go here: https://developers.google.com/maps/documentation/distance-matrix/start You need to: Create or select a project, Enable the API and Get an API key Just click on the "Get a Key" and assuming you have a Gmail account you can get everything going (alternatively go to console.developer.google.com after logging in to your gmail account, and create an app, and enable the API, and get the API key there). now go to https://developers.google.com/maps/documentation/distance-matrix/intro and follow the details. A couple things to note: use these: &mode=driving&departure_time=now&traffic_model=pessimistic if you want current traffic to influence your drive time. I also used &units=imperial

если выполняются все следующие условия:

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

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

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

19

это определенно возможно с помощью API. Вы можете создать объект GDirections без карты или направления маршрута. Вы можете сделать запрос на загрузку от А до Б, а затем вызвать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);

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

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

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

Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded
4

google.maps.DirectionsRenderer

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

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

Продолжительность с помощью:

directionsDisplay.directions.routes[0].legs[0].duration.text
Error: User Rate Limit Exceeded
2

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

Похожие вопросы