【问题标题】:Leaflet Popup not opening on click (Safari 13.1.3)点击时未打开传单弹出窗口(Safari 13.1.3)
【发布时间】: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: '&copy; <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


【解决方案1】:

感谢发布的 cmets,我现在意识到问题不在于我的代码,而是传单代码和浏览器,这个问题似乎得到了回答 Popup does not open when clicking on marker safari

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-04-30
    • 2017-06-08
    • 2020-06-03
    • 1970-01-01
    • 2018-12-18
    • 1970-01-01
    • 1970-01-01
    • 2018-04-01
    相关资源
    最近更新 更多