Подтвердить что ты не робот

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

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

4b9b3361

Ответ 1

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

Ответ 2

Приведенный выше ответ является нарушением условий обслуживания Google API и, следовательно, неверным.

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

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

Обновить:

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

Ответ 3

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


Вы можете использовать класс google.maps.DirectionsService (API JavaScript для Google Maps 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 + ')' );
    }
} );

Ответ 4

из google.maps.DirectionsRenderer

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

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

Продолжительность:

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

Ответ 5

  • сначала перейдите сюда: https://developers.google.com/maps/documentation/distance-matrix/start Вам необходимо: создать или выбрать проект, включить API и получить ключ API Просто нажмите "Получить ключ" и предположим, что у вас есть учетная запись Gmail, которую вы можете получить, и перейдите на страницу console.developer.google.com после входа в свою учетную запись gmail и создайте приложение и включите API, и получить там ключ API).
  • перейдите в 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.

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

Ответ 7

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

Ответ 8

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

Ответ 9

псевдокод:

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

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

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