Все примеры, с которыми я столкнулся, с помощью google maps api, похоже, показывают какую-то карту. Я хотел бы включить данные о предполагаемом времени поездки на машине, которую они дают вам, когда вы просите описание дороги от А до В на сайт. И только эти данные. Возможно ли без загрузки карты для конечного посетителя?
Использование API Карт Google для получения данных о времени поездки
Ответ 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 не показывает время диска на основе фактического трафика.
Ответ 6
В 2016 году у вас есть API-интерфейс для определения размера карты Google https://developers.google.com/maps/documentation/distance-matrix/get-api-key#key
Ответ 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, так что вы хотите.