如何使用反应传单向地图添加图例,而不使用引用和手动修改 DOM?

Sid*_*wan 1 javascript leaflet reactjs react-leaflet

我正在使用 react-leaflet 并想在地图上添加一个图例。

我目前可以通过将地图的 ref 传递给自定义组件并渲染 null 来实现,同时让函数创建 HTML 并将其添加到地图中。使用 Jest 和 Enzyme 测试裁判是一场噩梦。

有没有办法使用 react-leaflet 组件来实现这一点?

kbo*_*oul 7

您可以通过扩展react-leafletMapControl类并使用例如 Leaflet 官方页面教程提供的图例代码来实现这一点,该教程将 GeoJSON 与 Leaflet一起使用

class Legend extends MapControl {
   componentDidMount() {
      // place your code here

      ...
      const legend = L.control({ position: "bottomright" });

      ...
      const { map } = this.props.leaflet;
      legend.addTo(map);
   }
}
Run Code Online (Sandbox Code Playgroud)

然后在这里导入:

 <Map style={{ height: "100vh" }} center={position} zoom={13}>
        <TileLayer
          url="https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png"
          attribution='&copy; <a href="http://osm.org/copyright">OpenStreetMap</a> contributors'
        />
        <Legend />
 </Map>
Run Code Online (Sandbox Code Playgroud)

演示

  • 仅[此处](https://react-leaflet.js.org/docs/en/custom-components.html),但信息不多,不过是一个开始。 (2认同)