Как проложить пешеходный маршрут, используя Leaflet Routing Machine и Mapzen?

Я знаю, что Mapzen может предоставить пешеходный маршрут для маршрута, который я пытаюсь сделать, потому что я могу получить его на openstreetmaps.org.

Но я не могу заставить его работать на моей встроенной карте, и я абсолютно не знаю причину.

Мой код следующий:

L.Routing.control({
waypoints: [
    L.latLng(-44.004358, 170.476709),
    L.latLng(-43.985844, 170.464058)
],
router: L.Routing.Mapzen('valhalla-apikey', 'pedestrian')
// formatter: new L.Routing.Mapzen.Formatter()
}).addTo(cafeMap);

(Замена apikey на мой apikey)

Но все, что я получаю, это обычный маршрут вождения. Я попытался заменить "пешеход" на все другие доступные варианты, но не могу заставить его работать.

Кто-нибудь видит глюк в моем коде?

Спасибо

1 ответ

Решение

Вы неправильно инициализируете роутер. Плагин следует соглашению, описанному в документации Leaflet для фабрик классов. Так что вы можете использовать new Оператор для создания нового экземпляра класса маршрутизатора:

router: new L.Routing.Mapzen('valhalla-apikey', 'pedestrian')

или фабричный метод в нижнем регистре, который делает то же самое:

router: L.Routing.mapzen('valhalla-apikey', 'pedestrian')

Вы также должны указать форматер, чтобы машина маршрутизации могла анализировать маршруты, возвращенные из mapzen. Полный код для управления маршрутизацией будет таким:

var control = L.Routing.control({
  waypoints: [
    L.latLng(-44.004358, 170.476709),
    L.latLng(-43.985844, 170.464058)
],
  waypointMode: 'snap',
  router: new L.Routing.Mapzen('valhalla-apikey', 'pedestrian'),
  formatter: new L.Routing.Mapzen.Formatter()
}).addTo(map);

То, как вы это делаете (без оператора new), передает неопределенное значение в элемент управления маршрутизацией, а результаты, которые вы получаете, на самом деле поступают от маршрутизатора OSRM. Таким образом, похоже, что по умолчанию для машины маршрутизации Leaflet используется OSRM, если для маршрутизатора задано неопределенное значение.

Другие вопросы по тегам