我想根据一些纬度和经度标记在地图上多次设置路线。
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