Самый короткий маршрут без заданного пункта назначения в Google Maps V3? - PullRequest
4 голосов
/ 28 октября 2010

Итак, я только изучаю JavaScript, чтобы связываться с Google Maps API.Мне было интересно, есть ли у кого-нибудь элегантное решение этой проблемы, с которой я сталкиваюсь.

Запрос маршрута Google Maps должен содержать три вещи (origin, destination и travelMode).Мой режим путешествия всегда будет за рулем.Источник всегда будет находиться там, где находится пользователь.

Однако пункт назначения должен меняться.У меня есть несколько путевых точек, и пользователь посетит их, и хотел бы предоставить кратчайшее возможное путешествие в зависимости от того, какие путевые точки выбраны и где находится пользователь, заканчивая маршрут на одной из путевых точек (например, ABC или ACB, но всегда Axx...x).

Есть ли какой-либо другой способ сделать это, кроме расчета каждого возможного пути и наблюдения, который имеет наименьшее расстояние (или время, или что-то еще, на чем я оцениваю)?Похоже, что это будет непомерно дорого (O (n!)).

edit: Если для установленного флага optimizeWaypoints установлено значение true, это становится проблемой O (n) вместо O (n!), Но теперьУ меня проблемы с выдачей слишком большого количества запросов за слишком короткий промежуток времени.

Ответы [ 3 ]

6 голосов
/ 28 октября 2010

В направлениях Google есть настройка для предоставления оптимизированного маршрута (optimizeWaypoints - http://code.google.com/apis/maps/documentation/javascript/services.html#Directions), вы просто устанавливаете его в значение true в вашем направлении.

2 голосов
/ 19 сентября 2016

Если вам нужен самый короткий маршрут, вы можете сначала позвонить в Google distanceMatrix API и получить список сортировки остановок.

Затем вызовите указания API со списком сортировки.

0 голосов
/ 05 апреля 2019

Простым решением было бы указать исходную и конечную точки как одинаковые и попросить Google Maps оптимизировать маршрут на основе всех других путевых точек.Обычно он сначала либо идет в самую дальнюю точку, либо в последнюю, а затем возвращается в начало координат.Затем вы могли бы сделать еще один запрос без оптимизации, на этот раз указав пункт назначения в качестве последней оптимизированной путевой точки.

...