我最近升级到Leaflet 1.3.4。我在地图上画了一个圆和一个多边形。我使它们具有交互性,因此,当我将鼠标移到它们上方时,我会得到不同的鼠标指针-一切都很好,表现正常。
然后,我将地图向左拖动一点,然后将鼠标移回我的形状。令我惊讶的是,指针没有像以前一样发生变化。根据鼠标光标,就好像根本没有交互式形状。我在形状上再拖了一下鼠标,突然,我又得到了正确的(交互式)光标。
经过更多实验后,好像在地图上的形状周围创建了一个不可见的“窗口”。拖动地图时,窗口不会移动;只有形状可以。如果形状在该窗口内,则它们仅接收鼠标事件。我可以通过一点一点地移动地图来确认这一点,这些形状将慢慢失去它们的“交互式”表面积。
抱歉,这是一个很长的解释,但这是一个非常奇怪的问题。如果我完全可以澄清这一点,请给我留言,我会尽力而为。
我查看了Stack问题和当前的Leaflet问题,但没有发现与此相关的任何内容。为什么我的地图和形状会以这种方式运行,如何解决?我将不胜感激。
编辑:我正在使用Firefox 60.1版本。
编辑2:我能够使用Firefox 60 和以下代码重现该:
var map = new L.Map('leaflet', {
layers: [
new L.TileLayer('https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', {
'attribution': 'Map data © <a href="http://openstreetmap.org">OpenStreetMap</a> contributors'
})
],
center: [0, 0],
zoom: 0
});
var latlngs = [[37, -109.05],[41, -109.03],[41, -102.05],[37, -102.04]];
var polygon = L.polygon(latlngs, {color: 'red'}).addTo(map);
body {
margin: 0;
}
html, body, #leaflet {
height: 100%
}
<!DOCTYPE html>
<html>
<head>
<title>Leaflet</title>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<link type="text/css" rel="stylesheet" href="https://unpkg.com/leaflet/dist/leaflet.css" />
<link type="text/css" rel="stylesheet" href="style.css" />
</head>
<body>
<div id="leaflet"></div>
<script src="https://unpkg.com/leaflet/dist/leaflet-src.js"></script>
<script src="script.js"></script>
</body>
</html>
将地图拖动到左,右,上,下等位置,您将不会在鼠标悬停时更改形状。