【问题标题】:Is there a way to get information from a mapbox marker once it has been clicked?有没有办法从地图框标记中获取信息,一旦它被点击?
【发布时间】:2019-04-17 14:25:57
【问题描述】:

我正在尝试为我的 mapbox 应用程序创建自己的弹出窗口类型。但是,我试图将弹出窗口固定在屏幕底部,而不是悬停在标记上。我基本上想从处于活动状态的弹出窗口中获取信息,并将其放入地图之外的单独 HTML 元素中。或者手动设置弹出窗口的样式,使其始终固定在屏幕底部。

我尝试手动设置弹出窗口的样式,使其固定在屏幕底部,但似乎这是不可能的,因为地图框样式会在地图位置发生变化时自动重新定位弹出窗口。

for(var i = 0; i < currentArray.length ; i++){

        var el = document.createElement('div');
        var markerHeight = 50, markerRadius = 10, linearOffset = 25;
        el.className = 'marker2';
        new mapboxgl.Marker(el)
        .setLngLat([currentArray[i].lng, currentArray[i].lat])
        .addTo(map);
        new mapboxgl.Marker(el)
        .setLngLat([currentArray[i].lng, currentArray[i].lat])
        .setPopup(new mapboxgl.Popup({ offset: 25, closeOnClick:true})
            .setHTML('<h3>' + currentArray[i].name
            + '</h3>'  + '<p>' + currentArray[i].venue + '</p>'))
            .addTo(map);
}

上面的代码循环遍历列表元素的数组,并将它们绘制在地图上。我想找到一种方法来获取活动元素(即正在显示的弹出窗口)并将数组信息从中获取并放入 HTML 元素中。 非常感谢任何帮助!

【问题讨论】:

    标签: javascript mapbox mapbox-gl-js


    【解决方案1】:

    Popup (https://docs.mapbox.com/mapbox-gl-js/api/#popup) 有一个可以测试的.isOpen() 和一个可以监听的'open' 事件。

    【讨论】:

      【解决方案2】:

      您可能需要从使用新的 maboxgl.Marker.addTo 切换。在此处查看详细信息:https://docs.mapbox.com/help/troubleshooting/transition-from-mapbox-js-to-mapbox-gl-js/#add-a-marker

      另见https://stackoverflow.com/a/55923969/2312136

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2020-11-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-02-10
        • 1970-01-01
        相关资源
        最近更新 更多