Mapbox - 点击添加'事件到线图层

时间:2017-04-23 05:03:36

标签: mapbox mapbox-gl-js

TLDR;如何将弹出窗口添加到地图框" line"类型层?

我有一个加载地图集地图并为其添加一层线的功能。

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

   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

1 个答案:

答案 0 :(得分:3)

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

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

(我不认为回应鼠标点击线条特征的过程与点或多边形有任何不同。)