2016-04-24 41 views
2

我知道Mapzen可以爲我正在嘗試做的行程提供一條行人路線,因爲我可以在openstreetmaps.org上找到它。如何使用Leaflet Routing Machine和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)

但我得到的是正常的行駛路線。我嘗試用所有其他可用選項替換「行人」,但無法使其工作。

任何人在我的代碼中看到一個小故障?

謝謝

回答

1

您正在初始化路由器不正確。該插件遵循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路由器。因此,如果給路由器一個未定義的值,它看起來像Leaflet Routing Machine默認爲OSRM。

+0

感謝您的回答。實際上,在使用另一個Graphhopper而不是Mapzen發佈問題並將urlParameters:{vehicle:'foot'}添加到路由定義後,我很快找到了一個解決方案。謝謝 ! – eichan

相關問題