MapboxDirections动态设置起点和终点



我想根据一些纬度和经度标记在地图上多次设置路线。

setOrigin()setDestination()在地图加载时工作良好:

var directions = new MapboxDirections({
accessToken: mapboxgl.accessToken
});
map.addControl(directions,'top-left');
map.on('load',  function() {
directions.setOrigin([12, 23]);
directions.setDestinaion([11, 22]);
})

但当我稍后调用它时,例如,在地图moveend上,原点输入字段试图永远解析位置,我得到了无限循环(原点输入中有加载图标,控制台永远打印来自moveend函数的日志(

编辑:添加更多信息

我的代码片段

mymap.on('moveend', async function () {
if (old_zoom === mymap.getZoom()) {
let coords = mymap.getCenter();
console.log(coords);  // it is printed inifnitely, until Chrome crashes
directions.setOrigin('19.969415,50.061824');
directions.setDestination('19.9242978306511,50.0401092');
});

我认为它崩溃了,因为当我设置起点和终点时,路线正在显示,并且有一个动画移动地图,所以moveend事件被触发,等等

所以我认为这里的解决方案是在生成路线时阻止MapboxDirections移动我的地图,因为我的概念是每次用户停止移动地图时(原点总是在地图的中心(都使用setOrigin()

感谢您添加上下文!我将替换事件moveend

由CCD_ 9进行地图平移。然后,您可以在dragend的回调中重新设置directions对象。

请参阅此处的文档:

https://docs.mapbox.com/mapbox-gl-js/api/map/#map.event:dragend

相关内容

  • 没有找到相关文章

最新更新