Mapbox 地图盒-添加';单击';事件到线图层

Mapbox 地图盒-添加';单击';事件到线图层,mapbox,mapbox-gl-js,Mapbox,Mapbox Gl Js,TLDR;如何将弹出窗口添加到mapbox“line”类型图层 我有一个加载mapbox地图并向其添加一层线条的函数 我的目标是在点击该行时添加一个弹出窗口。 我按照示例添加了一个点击事件。但这给了我一个错误。有人指出我做错了什么吗 function renderLineLayer(layerName,data) { map.on('load', function() { map.addLayer({ "id": la

TLDR;如何将弹出窗口添加到mapbox“line”类型图层

我有一个加载mapbox地图并向其添加一层线条的函数

我的目标是在点击该行时添加一个弹出窗口。 我按照示例添加了一个点击事件。但这给了我一个错误。有人指出我做错了什么吗

   function renderLineLayer(layerName,data) {
        map.on('load', function() {
            map.addLayer({
                "id": layerName,
                "type": "line",
                "source": {
                    "type": "geojson",
                    "data": data

                },
                "layout": {
                    "line-join": "round",
                    "line-cap": "round",
                    "visibility":"visible"
                },
                "paint": {
                    "line-color": "blue",
                    "line-width": 8
                }
            });

            console.log(map.getLayer(layerName));        

            map.on('click', layerName, function (e) {
                console.log('click');                
                new mapboxgl.Popup()
                  .setLngLat(e.lngLat)
                  .setHTML(e.features[0].properties.name)
                  .addTo(map);

            });
        });

    }
我得到的错误是

TypeError: listeners[i].call is not a function[Learn More]  mapbox-gl-dev.js:29779:13

这有点像猜测,但是('click')事件API最近发生了变化。以前它没有层参数(IIRC)。如果您使用的是较早版本的Mapbox GL JS库,它将尝试调用您的第二个参数(层名称),就像调用函数一样,并给出错误消息

解决方案:更新至最新的Mapbox GL JS库版本(0.36)


(我认为响应鼠标单击线条特征的过程与点或多边形的过程没有任何区别。)

你说得对!。我当时在0.34上,正试图从网站上学习这些例子。现在工作。