2013-11-06 3 views
1

Я пытаюсь найти самый короткий путь из Lone Pine, Калифорния в Yosemite Village, CA.Google Maps v3 DistanceMatrix/Направления игнорировать avoidTolls: ложные

Простой Google Maps поиска показывает два пути:

  1. Toll маршрутов: US-395N, CA-120W ~ 316 км
  2. Нет платных маршрутов: CA-99N ~ 596 км

DirectionService/DistanceMatrixService имеют параметр avoidTolls:

avoidTolls (optional) — If true, the directions between points will be calculated using non-toll routes, wherever possible. 
avoidTolls (optional) when set to true indicates that the calculated route(s) should avoid toll roads, if possible. 

Я ожидаю, что службы возвращают маршрут № 1 при применении avoidTolls: false, но вместо этого возвращается маршрут №2.

Является ли мое ожидание или моя реализация http://jsfiddle.net/nQzD8/2 ошибочным?

Update:

Как доктор Molle отметил, маршрут # 1 игнорируется не из-за платных маршрутах, включенных, но потому, что он может быть закрыт в текущий момент времени ("Эта дорога может быть сезонно закрыто "на шаге направления).

user2961817 выяснил, что результат 316km может быть получен путем исключения шоссе (установка avoidHighways: true).

Существуют ли другие варианты получения результата DistanceMatrix в другое время года, помимо того, что вы становитесь клиентом «Карты для бизнеса» и используете API DistanceMatrix с параметром departure_time?

Решение:

Маршрут # 1 игнорируется, поскольку он может быть закрыт в момент запроса и не потому, что там платные маршруты включены. Для того, чтобы восстановить более короткий маршрут есть следующие варианты:

DistanceMatrixService:

  • Стать бизнес-клиентов и установить параметр DEPARTURE_TIME.
  • Выдать второй запрос с avoidHighways: true и взять короткий маршрут (случается работать в данном конкретном случае, но не будет в большинстве случаев других)

DirectionService:

  • Использование provideRouteAlternatives:true, итерация по альтернативам и взять кратчайший
+0

Это только возвращает короткий маршрут для меня, когда provideRouteALternatives верно и avoidTolls ложно. http://jsfiddle.net/nQzD8/8/ – geocodezip

ответ

2

Когда я явно нарисовать направление через CA-120 W я получаю следующую информацию по этой дороге: Эта дорога может быть закрыта сезонно. Возможно, именно поэтому google избегает этой дороги.

The Tioga Road closes due to snow, usually from sometime in November through late May or early June. ... это ноябрь

+0

Может быть. Где вы видите «сезонно закрытую» информацию? Когда я выбираю US-395N/CA-120W в качестве альтернативного маршрута, я получаю только «Этот маршрут имеет сбои». Ничего о сезонах. – InteractiveCube

+0

Когда я использую панель для получения текста для маршрута, который я вижу для шага # 6: ** Поверните налево на CA-120 W/Tioga Rd Продолжить следовать CA-120 W Частичная платная дорога Эта дорога может быть сезонной closed ** –

+0

Любые другие варианты получения результата DistanceMatrix в течение определенного месяца, помимо того, что вы становитесь клиентом Maps for Business и используете API DistanceMatrix с параметром departure_time? – InteractiveCube

1

Кажется, работает для меня. Когда установлено значение true, он отображает другой маршрут, а затем при установке значения false.

Ожидаемый результат: 316 км через US-395 N и CA-120 W

+0

Интересно. Я получаю 596 км для avoidTools: false и avoidTools: true. Какие расстояния вы получаете? Можете ли вы проверить http://jsfiddle.net/nQzD8/6/, он показывает мне два одинаковых маршрута. – InteractiveCube

+0

Когда установлено значение true: Расстояние по шкале расстояний: 596 км Расстояние по маршруту Сервис: 595 км Ожидаемый результат: 316 км по US-395 N и CA-120 W – WonderWorld

+0

Когда установлено значение false: Расстояние по шкале расстояний: 596 км Расстояние от направления: 316 км Ожидаемый результат: 316 км по US-395 N и CA-120 Вт плюс он отображает другой маршрут. – WonderWorld