【发布时间】:2021-07-22 03:43:00
【问题描述】:
EDIT-https://codepen.io/jdog6652/pen/YzNbPQg-现场示例取消注释JS底部的函数调用
EDIT2- 感谢大家的帮助,这似乎是一个浏览器问题,在我的 Safari (13.1.3) 版本上,弹出窗口没有加载,但在其他浏览器上似乎这不是问题。有什么办法可以让它在 Safari 中工作?
我遇到一个问题,当我将弹出窗口绑定到标记并将其添加到地图时,即使单击标记,它也永远不会出现。
如果我将它绑定到标记,将其添加到地图然后链接 .openPopup() 弹出窗口会在加载时出现,但在关闭后就不可能再次打开。
下面是我如何初始化地图的代码
var map = L.map('mapid').setView([51.505, -0.09], 13);
L.tileLayer('https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', {
attribution: '© <a href="https://www.openstreetmap.org/copyright">OpenStreetMap</a> contributors'
}).addTo(map);
下面是我如何将标记添加到地图的 for 循环
function populateLeaflet(data){
let json = JSON.parse(data);
map.flyTo([json[0]['lat'],json[0]['lng']], 12);
json.forEach(element =>
L.marker([element['lat'], element['lng']]).bindPopup(element['title']).addTo(map)
)
}
这将成功飞到将标记添加到地图的位置,但是当我单击标记时没有任何反应
切换绑定的顺序并添加到什么都不会改变,这是在单击标记时添加甚至监听器的唯一解决方案,还是我犯了一些错误?
我在这里发现的类似问题并没有解决这个奇怪的问题。
【问题讨论】:
-
您能否在 codepen/codesandbox 中重现此问题?你的代码没有明显的问题
-
我很抱歉@SethLutske 这么晚才回来codepen.io/jdog6652/pen/YzNbPQg 这是一个例子,取消注释调用函数的部分,你会看到点击时没有打开弹出窗口
-
此代码适用于 codepen.io,它转到标记,我单击,它打开弹出窗口,关闭它,再次单击然后重新启动。可以正常工作。
-
非常感谢您为我检查和验证@GrzegorzT。如果可能的话,你可以试试 Safari 吗?在我的浏览器 Safari 13.1.3 中这不起作用
标签: javascript leaflet