传单:当边界改变时触发一个事件

Leaflet : Firing an event when bounds change

本文关键字:事件 一个 边界 改变 传单      更新时间:2023-09-26

我正在使用传单开发一个新的应用程序。你可以在这里了解一下这个应用程序。

我想在映射边界发生变化时触发一个事件。我看了医生,但找不到任何相关的东西。

我已经找到了getBounds()方法,和可能的事件方法列表,但没有结合两者。

我看到这样做的唯一其他可能性是检查鼠标拖动和滚动事件,并每次检查边界。但我希望能有更好的事做。

你有更好的主意吗?谢谢!

每次移动地图时都会更新地图边界(通过平移或缩放)。所以你可以使用moveend事件

map.on('moveend', function(e) {
   var bounds = map.getBounds();
});

在react-传单上,当直接在传单的MapContainer组件上设置maxBounds时,我有一个带有堆栈跟踪的警告listener not found at MapContainer

如果有人在react-传单上运行这个问题,我找到了这样的解决方法:

function MapEventHandlers() {
  const mapMoveEnd = useMapEvent('moveend', () => {
    mapMoveEnd.setMaxBounds([
      [51.234567, -5.67],
      [41.234567, 10.69],
    ])
  })
}
(...)
<MapContainer (...) >
  <MapEventHandlers />
  <TileLayer url="https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png" />
  (...)
</MapContainer>

希望有帮助