为什么 Leaflet 在 React 中平移和缩放的速度如此之慢?

IT技术 reactjs leaflet react-leaflet
2021-05-26 10:59:51

我有一个相当简单的应用程序,它使用 Leaflet.js 渲染大约 3000 个点。它渲染得相当快,但平移和缩放非常慢。

查看 chrome 中的性能工具,看起来大部分时间都花在重新计算样式上,但这并没有帮助。

      <LeafletMap
        center={[50, 10]}
        zoom={6}
        maxZoom={10}
        preferCanvas={true}
      >
        <TileLayer
          url='http://{s}.tile.osm.org/{z}/{x}/{y}.png'
        />
        {this.state.locations.map( (location, index) => {
            return (
              <Marker position={[location.latitude, location.longitude]}>
                <Popup>
                  Popup for any custom information.
                </Popup>
              </Marker> 
            )
        })}
    </LeafletMap>
1个回答

我遇到了同样的问题,发生这种情况是因为每次缩放时它都会重新渲染所有标记,并且还需要浏览器内存来绘制标记。因此,随着标记数量的增加,它会使您的地图变慢。

所以,我使用了https://github.com/manubb/Leaflet.PixiOverlay,它非常快,因为它在浏览器的 HTML Canvas 中呈现。我们也有react版本可用 - https://www.npmjs.com/package/react-leaflet-pixi-overlay

您也可以尝试相同的方法。