2015-09-09 3 views
1

Я использую карту Google api для поиска расстояния между двумя точками с помощью DistanceMatrixService(). В обратном вызове getDistanceMatrix() я могу получить расстояние между двумя точками. Между двумя точками может быть несколько путей, но я всегда получаю длину кратчайшего пути. Как я могу получить все пути? Пожалуйста, обратитесь код ниже:Google map api v3: найти несколько путей с помощью DistanceMatrixService

var service = new google.maps.DistanceMatrixService(); 
service.getDistanceMatrix({ 
    origins: [--some origins--], 
    destinations: [--some destinations--], 
    travelMode: google.maps.TravelMode.DRIVING, 
    unitSystem: google.maps.UnitSystem.METRIC, 
    avoidHighways: false, 
    avoidTolls: false, 
}, function (response, status) { 
     for (var i = 0, length = response.rows[0].elements.length; i < length; i++) { 
      if (response.rows[0].elements[i].status == 'NOT_FOUND') { 
       alert('Source or destination address could not be found.'); 
       return; 
      } 

      var distance = response.rows[0].elements[i].distance.text; 
      var duration = response.rows[0].elements[i].duration.text; 
     } 
}); 

В коде выше, массив response.rows[0].elements всегда получается иметь длину один. Он должен иметь больше, чем один объект, если между источником и получателем существует несколько путей. Как это сделать? Заранее спасибо.

+0

Связанный вопрос: [Предлагаемый вариант маршрутов в API Карт Google?] (Http://stackoverflow.com/questions/19676386/sposed-routes-option-in-google-maps-api) – geocodezip

ответ

0

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

Если вам нужны альтернативные маршруты и у вас есть только один источник и пункт назначения, введите DirectionsService, установите provideRouteAlternatives на номер true.

из the documentation:

provideRouteAlternatives (по желанию), если задано значение верно указывает, что служба может обеспечить более чем один альтернативный маршрут в ответ. Обратите внимание, что предоставление альтернативных маршрутов может увеличить время отклика с сервера.

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