javascript - 如何在不使用 refs 和手动修改 DOM 的情况下使用 React 传单向 map 添加图例?

标签 javascript reactjs leaflet react-leaflet

我正在使用 react-leaflet 并想向 map 添加图例。

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

有没有办法使用 react-leaflet 组件来完成这个?

最佳答案

您可以通过扩展react-leafletMapControl 类并使用例如Leaflet 官方页面教程为Using GeoJSON with Leaflet 提供的图例代码来实现。 .

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

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

      ...
      const { map } = this.props.leaflet;
      legend.addTo(map);
   }
}

然后在这里导入:

 <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>

Demo

关于javascript - 如何在不使用 refs 和手动修改 DOM 的情况下使用 React 传单向 map 添加图例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57403442/

相关文章:

javascript - FabricJS 自定义过滤器插件在向图像添加过滤器时可以工作,但无法通过 JSON 加载 Canvas

javascript - jquery ReplaceWith 混合引号 ' and "

javascript - 无法读取Angular2模板函数中的回调函数

javascript - 尝试显示我创建的本地 json 文件中的随机数据,但在渲染中出现未定义的错误

javascript - 在页面加载时 react js 调用 api

javascript - Nextjs 第一次运行时报错 : Error: Cannot find module 'caniuse-lite/data/features/css-unicode-bidi'

csv - 将 csv 文件拖放到 Leaflet map 中

javascript - 尝试检测浏览器关闭事件

javascript - Leaflet:加载geoJSON文件和特定的PopUp

javascript - 如何修复传单 map 中无效的 LatLng 对象 : (NaN, NaN)?