javascript - 如何使用反应在传单的图层控件选择上添加标题?
问题描述
我正在使用带有 Bing 地图的 Leaflet JS。我需要在类型 1 图层和类别 1覆盖选择的顶部添加标题,显示在地图的右上方。我看不到任何相同的文档。有人能帮我吗。
我的层次是,
基础层:默认和英文
叠加层:类型 1 层、类型 2 层、类别 1、类别 2
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)
需要在地图的图层选择窗口中添加标题选择类型和选择类别,如下所示,
选择类型
Type1Layer
Type2Layer
选择类别
类别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:
'© <a href="http://www.openstreetmap.org/copyright">OpenStreetMap</a>'
}
),
Streets: L.tileLayer(
"http://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png",
{
maxZoom: 19,
attribution:
'© <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" }} />;
将您的图层替换为示例中的图层,您应该会很好
推荐阅读
- pandas - 根据一列中的多个字符串选择行
- c# - 如何将我的 xamarin android 应用注册为 SMS 助理处理程序?
- tsql - 使用 T-SQL 可以从六个月的销售数据中从最低到最高创建 100 个平均价格(如 Excel PERCENTILE)?
- python - 问题:用户的条目没有被正确保存
- azure - Azure 文件共享 - 设置为阻止两个人编辑同一个文件
- javascript - 如何在Javascript中的函数内注入模拟函数
- dynatrace - Dynatrace 新用户、总用户
- swift - 在自动合成的 init 方法中使用非默认参数参数化 @PropertyWrapper?
- javascript - 有条件地生成表格换行符
- wpf - 具有可调整大小列的数据网格背景问题