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
答案 0 :(得分:3)
这是一个猜测,但on('click')
事件API最近发生了变化。以前它没有层参数(IIRC)。如果您使用的是旧版本的Mapbox-GL-JS库,它会尝试调用您的第二个参数(图层名称),就像它是一个函数一样,它会给出错误消息。
解决方案:更新到最新的Mapbox-GL-JS库版本(0.36)。
(我不认为回应鼠标点击线条特征的过程与点或多边形有任何不同。)