Internet explorer 传单标签无隐藏无指针事件
我必须在地图中添加带有圆圈标记的自定义城市名称。但是我想用这个标签,因为它下面有一个polygone 我的JS代码添加了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(
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一起工作,特别是如果你需要背景或边框不透明的话。