javascript - 如何使用 react 在传单的图层控制选择上添加标题?

标签 javascript reactjs dictionary leaflet bing-maps

我正在使用 Leaflet JS 和 Bing map 。我需要在显示在 map 右上角的类型 1 图层类别 1 叠加选择之上添加标题。我看不到任何相同的文档。有人可以帮助我吗?

我的图层是,

基础层:默认和英语

叠加:类型 1 图层、类型 2 图层、类别 1、类别 2

图像 enter image description here

let type1Layer = L.layerGroup()
let type2Layer = L.layerGroup()
let category1 = L.layerGroup()
let category2 = L.layerGroup()
let overlays = {
            'Type1Layer': type1Layer, 
            'Type2Layer': type2Layer, 
            'Category1': category1, 
            'Category2': category2 
}
L.control.layers(baseLayers, overlays).addTo(myMap)

需要在 map 的图层选择窗口中添加标题“选择类型”和“选择类别”,如下所示,

选择类型

类型1层

类型2层

选择类别

类别1

类别2

最佳答案

使用leaflet-groupedlayercontrol插件以实现所需的结果。

当组件安装时,您可以使用groupedOverlays对象来分离层,方法是将键作为对象传递,其中它们的名称将是类似于字典的分离层:

    useEffect(() => {
    var basemaps = {
      Grayscale: L.tileLayer(
        "http://{s}.tiles.wmflabs.org/bw-mapnik/{z}/{x}/{y}.png",
        {
          maxZoom: 18,
          attribution:
            '&copy; <a href="http://www.openstreetmap.org/copyright">OpenStreetMap</a>'
        }
      ),
      Streets: L.tileLayer(
        "http://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png",
        {
          maxZoom: 19,
          attribution:
            '&copy; <a href="http://www.openstreetmap.org/copyright">OpenStreetMap</a>'
        }
      )
    };

    var groups = {
      cities: new L.LayerGroup(),
      restaurants: new L.LayerGroup(),
      dogs: new L.LayerGroup(),
      cats: new L.LayerGroup()
    };

    L.marker([39.61, -105.02], { icon })
      .bindPopup("Littleton, CO.")
      .addTo(groups.cities);

    ...

    var map = L.map("map", {
      center: [39.73, -104.99],
      zoom: 10,
      layers: [basemaps.Grayscale, groups.cities]
    });

    // Overlay layers are grouped
    var groupedOverlays = {
      SelectType: {
        Type1Layer: groups.cities, // use your one
        Type2Layer: groups.restaurants // use your one
      },
      SelectCategory: {
        Category1: groups.dogs, // use your one
        Category2: groups.cats  // use your one
      }
    };

    // Use the custom grouped layer control, not "L.control.layers"
    L.control.groupedLayers(basemaps, groupedOverlays).addTo(map);
  }, []);

  return <div id="map" style={{ width: "600px", height: "400px" }} />;

将您的图层替换为示例中的图层,您应该会很好

demo

关于javascript - 如何使用 react 在传单的图层控制选择上添加标题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61254625/

相关文章:

reactjs - Image Picker 在 React Native 应用程序中不起作用,为什么?

javascript - 在迭代器上使用 map()

javascript - 删除选择列表中的向下箭头

javascript - 为什么 `exports`在nodejs模块中引用与 `this`相同的对象?

reactjs - React 第三方库之间的 prop 名称冲突

javascript - 提高 Angular 性能: change the view to reactjs or Mithril?

variables - 返回变量作为 map 的 Clojure 惯用解决方案

python - 对字典中的句子向量进行聚类

javascript - 更新消费者之外的 react 上下文?

javascript - Firebase v3 交易和 promise