Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/438.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 地图盒悬停弹出窗口赢得';关不上_Javascript_Popup_Hover_Mapbox_Mapbox Gl Js - Fatal编程技术网

Javascript 地图盒悬停弹出窗口赢得';关不上

Javascript 地图盒悬停弹出窗口赢得';关不上,javascript,popup,hover,mapbox,mapbox-gl-js,Javascript,Popup,Hover,Mapbox,Mapbox Gl Js,我已经将Mapbox示例改编为a,并使用了另一个示例,除了弹出窗口不会关闭“mouseleave”之外,其他一切都很好。当我把这两个例子结合起来时,我一定是做错了什么,但我到处都找不到答案。请帮忙 mapboxgl.accessToken='pk.eyj1ijoibwfyxnoywzzxiilcjhijoi2ponnkwz3pvmdi5zzj4cwuyy296nnnjdcj9.PgJCuPhDYgm8oCmsZlAeQA';//将此替换为您的访问令牌 var map=new mapboxgl

我已经将Mapbox示例改编为a,并使用了另一个示例,除了弹出窗口不会关闭“mouseleave”之外,其他一切都很好。当我把这两个例子结合起来时,我一定是做错了什么,但我到处都找不到答案。请帮忙


mapboxgl.accessToken='pk.eyj1ijoibwfyxnoywzzxiilcjhijoi2ponnkwz3pvmdi5zzj4cwuyy296nnnjdcj9.PgJCuPhDYgm8oCmsZlAeQA';//将此替换为您的访问令牌
var map=new mapboxgl.map({
容器:“映射”,
风格:'mapbox://styles/maryshaffer/cjh6yf7c30apg2sotfzmyf2je“,//将其替换为您的样式URL
});
//下一步的代码将转到此处
addControl(新的mapboxgl.NavigationControl());
地图上('mouseenter','Pilgoring sites markers',功能(e){
//将光标样式更改为UI指示器。
map.getCanvas().style.cursor='pointer';
});
地图上('mouseenter','Pilgoring sites markers',功能(e){
var features=map.queryRenderedFeatures(即点{
图层:['pilgrage-sites-markers']//将其替换为图层名称
});
如果(!features.length){
返回;
}
变量特征=特征[0];
var popup=new mapboxgl.popup({
closeOnClick:false,
偏移量:[0,-15]})
.setLngLat(特征、几何、坐标)
.setHTML(“”+feature.properties.title+''+feature.properties.description+'

')) .setLngLat(特征、几何、坐标) .addTo(地图); }); map.on('mouseleave','pilgrapping sites markers',function(){ map.getCanvas().style.cursor=''; popup.remove(); });
问题在于
弹出窗口
变量是在
map.on('mouseenter')
事件的处理程序中本地声明的

因此,它没有在
map.on('mouseleave')
事件的处理程序中定义

因此,您需要将
popup
变量的声明移动到这两个函数的范围内


例如:

非常感谢,这非常有效,正是我需要的答案!事实上,我意识到我不希望当你停止悬停在该点上时弹出窗口消失,因为这样人们就不能点击弹出窗口中的“了解更多”链接,但你的回答绝对正确,对我将来会有帮助。谢谢感谢JS小提琴,这帮助我了解了如何打开/关闭popups@JDD(不客气)