Leaflet JS Map:MouseOver 上的弹出窗口在错误的位置打开
Leaflet JS Map: Popup on MouseOver opens in incorrect location
我正在使用 Leaflet jS 制作地图,除了需要在将鼠标悬停在地图上的某个国家/地区上方时弹出国家/地区名称外,它运行良好。
关于使用以下代码
layer.on({
mouseover: function over(e) {
layer.bindPopup(L.popup().setContent(feature.properties.name));
layer.openPopup();
},
mouseout: function out(e) {
layer.closePopup();
},
});
确实会弹出国家/地区名称,但它在 int 的位置上略有偏差。例如,当鼠标悬停在弹出窗口上时,美国会在墨西哥西部的太平洋打开。所有弹出窗口都稍微偏离悬停发生的位置。
你知道弹窗怎么设置在国内总是直接弹出吗?
在此先感谢您对此提供的任何帮助。
虽然没有明确记录,但当您 bindPopup
在 Leaflet 路径(矢量)层上时,它会将弹出提示定位在层的“中心”,即与其边界相比的中间。
在美国的情况下,图层可能是一个包含夏威夷的多面体。这将图层边界移至西南,导致图层“中心”远离墨西哥。
您可以为您的用例计算一个更合理的“中心”,并在地图上明确设置弹出位置,而不是将其绑定到图层(中心)。
然而,在某些情况下(通常是小图层)您可能会遇到鼠标悬停弹出窗口闪烁的经典可用性问题:如果弹出窗口在鼠标下打开,则会触发 mouseout 事件,从而关闭您的弹出窗口。然后会触发一个新的鼠标悬停事件,打开一个新的弹出窗口等。
通常的解决方法是使用 Leaflet Tooltip instead, for which you do not need to implement the mouseover/mouseout stuff yourself. And you can use the sticky
option 将其放置在鼠标光标旁边,以摆脱任何中心计算。
If true, the tooltip will follow the mouse instead of being fixed at the feature center.
我正在使用 Leaflet jS 制作地图,除了需要在将鼠标悬停在地图上的某个国家/地区上方时弹出国家/地区名称外,它运行良好。
关于使用以下代码
layer.on({
mouseover: function over(e) {
layer.bindPopup(L.popup().setContent(feature.properties.name));
layer.openPopup();
},
mouseout: function out(e) {
layer.closePopup();
},
});
确实会弹出国家/地区名称,但它在 int 的位置上略有偏差。例如,当鼠标悬停在弹出窗口上时,美国会在墨西哥西部的太平洋打开。所有弹出窗口都稍微偏离悬停发生的位置。
你知道弹窗怎么设置在国内总是直接弹出吗?
在此先感谢您对此提供的任何帮助。
虽然没有明确记录,但当您 bindPopup
在 Leaflet 路径(矢量)层上时,它会将弹出提示定位在层的“中心”,即与其边界相比的中间。
在美国的情况下,图层可能是一个包含夏威夷的多面体。这将图层边界移至西南,导致图层“中心”远离墨西哥。
您可以为您的用例计算一个更合理的“中心”,并在地图上明确设置弹出位置,而不是将其绑定到图层(中心)。
然而,在某些情况下(通常是小图层)您可能会遇到鼠标悬停弹出窗口闪烁的经典可用性问题:如果弹出窗口在鼠标下打开,则会触发 mouseout 事件,从而关闭您的弹出窗口。然后会触发一个新的鼠标悬停事件,打开一个新的弹出窗口等。
通常的解决方法是使用 Leaflet Tooltip instead, for which you do not need to implement the mouseover/mouseout stuff yourself. And you can use the sticky
option 将其放置在鼠标光标旁边,以摆脱任何中心计算。
If true, the tooltip will follow the mouse instead of being fixed at the feature center.