【发布时间】:2020-04-19 19:49:13
【问题描述】:
我想根据一些标记纬度和经度在我的地图上多次设置路线。
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 上,源输入字段试图永远解析位置,我得到无限循环(源输入中有加载图标,控制台打印来自@的日志987654325@函数永远)
编辑:添加更多信息
我的代码片段
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() (原点始终位于地图中心)
【问题讨论】:
-
你能在地图加载时不调用它的地方添加代码吗?另外,您想显示多条路线,还是只更改当前显示的路线?
-
@Moritz 嗨,我添加了更多信息。我一次只想要一条路线,但可以多次更改。
标签: javascript navigation geolocation mapbox directions