【问题标题】:MapboxDirections set origin and destination dynamicallyMapboxDirections 动态设置起点和终点
【发布时间】: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


【解决方案1】:

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

dragend 的目的是让 sue 进行地图平移。然后您可以在dragend 的回调中重新设置方向对象。

请在此处查看文档:

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

【讨论】:

    猜你喜欢
    • 2016-07-24
    • 2023-01-27
    • 1970-01-01
    • 2017-07-06
    • 1970-01-01
    • 1970-01-01
    • 2012-07-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多