2016-04-24 5 views
2

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

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

Мой код выглядит следующим образом:

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)

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

Кто-нибудь видит сбой в моем коде?

Thanks

ответ

1

Вы неправильно инициализируете маршрутизатор. Плагин следует за соглашением, описанным в документах Leaflet для class factories. Таким образом, вы можете использовать оператор 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); 

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

+0

Спасибо за ваш ответ. На самом деле я нашел решение вскоре после публикации вопроса, используя другой Graphhopper вместо Mapzen и добавив urlParameters: {vehicle: 'foot'} к определению маршрутизации. Благодаря ! – eichan