Кратчайший путь между двумя адресами

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

введите описание изображения здесьСейчас я работаю над веб-сайтом с google map, я хочу рассчитать кратчайший путь между двумя разные адреса такие же, как на карте Google. затем верните длину пути как переменную javascript.


person Hossam Oukli    schedule 23.07.2013    source источник
comment
Вы можете получить альтернативные маршруты с помощью Google Maps API v3 DirectionsService. Каждый маршрут включает в себя расстояние и продолжительность. Руководство для разработчиковСправочник по DirectionsService, см. ProvideRouteAlternatives – следует ли предоставлять альтернативные маршруты. Необязательный.   -  person geocodezip    schedule 23.07.2013


Ответы (2)


Вы можете использовать эти функции:

google.maps.geometry.spherical.computeDistanceBetween (latLng1, latLng1);

Аргументами являются два объекта LatLng.
Убедитесь, что вы включили:

<script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false&v=3&libraries=geometry"></script>
person Tiago Sippert    schedule 23.07.2013
comment
Что он возвращает? - person Hossam Oukli; 23.07.2013
comment
кратчайший путь прямо - person Tiago Sippert; 23.07.2013
comment
Но это вычисляет длину геодезической между двумя объектами LatLng, либо маршрут существует, либо нет. - person Hossam Oukli; 24.07.2013

Я нашел его, его можно рассчитать с помощью API карты Google под названием Distance Matrix, он возвращает ответ json, содержащий The recommended path's length и Duration.

{
"destination_addresses" : [ "Témara, Maroc" ],
"origin_addresses" : [ "Rabat, Maroc" ],
"rows" : [
  {
     "elements" : [
        {
           "distance" : {
              "text" : "13,6 km",
              "value" : 13620
           },
           "duration" : {
              "text" : "23 minutes",
              "value" : 1358
           },
           "status" : "OK"
        }
     ]
  }
],
"status" : "OK"
}

Это должно работать нормально:

function getDistance()
{
var url="http://maps.googleapis.com/maps/api/distancematrix/json?origins=rabat&destinations=temara&mode=driving&language=fr-FR&sensor=false";
var def = new jQuery.Deferred(); 
$.getJSON(url,function(json)
{
if (json.status=="OK")
{
var distance=json.rows[0].elements[0].distance.text;
}
def.resolve(distance);
});
return def.promise();
}

$.when(getDistance()).then(function(distance){
alert(distance);});

Демо

person Hossam Oukli    schedule 24.07.2013