Internet explorer 传单标签无隐藏无指针事件

Internet explorer 传单标签无隐藏无指针事件,internet-explorer,leaflet,pointer-events,Internet Explorer,Leaflet,Pointer Events,我必须在地图中添加带有圆圈标记的自定义城市名称。但是我想用这个标签,因为它下面有一个polygone 我的JS代码添加了circleMarker var ville_label = new L.CircleMarker( [lat, lng], { clickable: false, radius: (1/zoom)*12 } ).bindLabel(lib, { noHide: true, className: "leaflet-ville-label" }) .addTo(

我必须在地图中添加带有圆圈标记的自定义城市名称。但是我想用这个标签,因为它下面有一个polygone 我的JS代码添加了
circleMarker

var ville_label = new L.CircleMarker(
    [lat, lng], 
    { clickable: false, radius: (1/zoom)*12 }
).bindLabel(lib, { noHide: true, className: "leaflet-ville-label" })
.addTo(ville_layer);
在CSS中,我禁用了指针事件

.leaflet-ville-label {
    pointer-events: none;
}
但是IE不支持指针事件,标签是一个div元素而不是SVG


有人有办法禁用静态标签上的指针事件吗?

通过层转发鼠标事件可能有助于解决此问题。这是ie中缺少指针事件的一种解决方法。以下是关于这个问题的一篇不错的博客文章:


您不需要做更多的事情

如中所述,IE 9和10将转发事件,只要标签的背景是透明的。 IE 11和其他浏览器遵循

.leaflet-ville-label {
    pointer-events:none;
}

请看

我找到了一个解决方案,但不像我第一次想的那样

我使用mapbox库调用

详细程序如下:

  • 选中“我的所有标签上的单击事件”
  • 在地图拖动后不要触发单击(我在拖动开始时已经有了
    noclick
  • 把鼠标放在一块
  • 用这个板条得到多边形
  • 并最终触发单击结果多边形
下面是我的代码来实现这一点:

$(".leaflet-ville-label").off("click").on("click", function(e) {
    if ($(this).hasClass("noclick")) {
        $(".leaflet-ville-label").removeClass("noclick");
        return;
    }
    for (layer_id in kml_layer._layers) {
        var under_layer = leafletPip.pointInLayer(france.mouseEventToLatLng(e), kml_layer._layers[layer_id]);
        if (under_layer.length > 0) {
            under_layer[0].fire("click");
        }
    }
});

是的,我已经测试过了,但是
document.elementFromPoint
无法返回map kml元素。我错过了隐藏curretn元素的点。但是我现在有了一个
path
g
元素。你能从这里得到多边形吗?这是我找到的一个转换路径的函数:我指的是传单多边形。我可以看到通过传单生成svg代码,但没有事件附件。此方法似乎不适用于我的图层数据。编辑:我刚刚了解到IE 11也遵循
指针事件:无
。这意味着我无法在我的家用电脑上检查IE的透明性。将检查IEI我需要此网站与IE 8+兼容此解决方案在其上不起作用。或者我做错了。看起来像是IE9及以上。我可以确认这个soloution不会与IE一起工作,特别是如果你需要背景或边框不透明的话。