在不止一层中可见传单标记
Having Leaflet markers visible in more than one layer
我希望我的一些 Leaflet 标记在我的 Openstreetmap 地图上不止一层可见。
举个例子:伦敦是海港,也是首都。
所以我想在 select 只有层 'harbors' 或层 'capital cities'.
时看到伦敦标记
但是 Leaflet 标记和图层的正常行为似乎是伦敦仅在图层 'harbors' 和 'capital cities' 都被 selected 时才会显示。
如果仅 selected 两层中的一层,如何实现显示伦敦标记?
代码:
var harbor = L.layerGroup().addTo(map);
var capital = L.layerGroup().addTo(map);
var marker1 = L.marker([51.5, 0]);
marker1.addTo(harbor);
marker1.addTo(capital);
var overlays = { "Capital": capital, "Harbor": harbor};
L.control.layers(null, overlays).addTo(map);
@Tordanik 提供的 link 很有帮助。
添加此代码即可完成工作:
map.on("overlayremove", function(o) {
if (map.hasLayer(capital)) {
map.removeLayer(capital);
map.addLayer(capital);
}
if (map.hasLayer(harbor)) {
map.removeLayer(harbor);
map.addLayer(harbor);
}
});
ovelayremove-click 后采取的步骤:
- 测试每一层是否激活
- 删除此图层
- 将此层与他的标记一起放回去
结果:该图层中的所有标记再次可见。
我希望我的一些 Leaflet 标记在我的 Openstreetmap 地图上不止一层可见。
举个例子:伦敦是海港,也是首都。 所以我想在 select 只有层 'harbors' 或层 'capital cities'.
时看到伦敦标记但是 Leaflet 标记和图层的正常行为似乎是伦敦仅在图层 'harbors' 和 'capital cities' 都被 selected 时才会显示。
如果仅 selected 两层中的一层,如何实现显示伦敦标记?
代码:
var harbor = L.layerGroup().addTo(map);
var capital = L.layerGroup().addTo(map);
var marker1 = L.marker([51.5, 0]);
marker1.addTo(harbor);
marker1.addTo(capital);
var overlays = { "Capital": capital, "Harbor": harbor};
L.control.layers(null, overlays).addTo(map);
@Tordanik 提供的 link 很有帮助。 添加此代码即可完成工作:
map.on("overlayremove", function(o) {
if (map.hasLayer(capital)) {
map.removeLayer(capital);
map.addLayer(capital);
}
if (map.hasLayer(harbor)) {
map.removeLayer(harbor);
map.addLayer(harbor);
}
});
ovelayremove-click 后采取的步骤:
- 测试每一层是否激活
- 删除此图层
- 将此层与他的标记一起放回去 结果:该图层中的所有标记再次可见。