我知道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)
但我得到的只是正常的驾驶行程。我试着更换“步行者”#39;通过所有其他可用选项,但无法使其发挥作用。
有人发现我的代码出现故障吗?
由于
答案 0 :(得分: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);
你这样做(没有new运算符)是将未定义的值传递给路由控件,你得到的结果实际上是来自OSRM路由器。因此,如果给路由器一个未定义的值,它看起来像Leaflet Routing Machine默认为OSRM。