【问题标题】:Mapbox Toggle Layers offMapbox 关闭图层
【发布时间】:2015-01-16 03:41:12
【问题描述】:

我有一组 23 个地图框层,可以独立打开和关闭。我想包括一个主 OFF ALL 切换。我怎样才能做到这一点?代码如下:

<script type="text/javascript">
var map = L.map('map',{center: [56.5, -1], minZoom: 7, zoomControl: false, legendControl: true}).setView([56.5, -1], 7);
map.addControl(new L.Control.ZoomMin())
var baseLayer = new L.mapbox.tileLayer('inosys.k52e98ob').addTo(map);
var ui = document.getElementById('map-ui');

var overlays = [
['inosys.k8mg7jp2','Toggle All On', 1], 
['#','Toggle All Off', 1], 
['inosys.jgsk2of8','Significant Discoveries', 999999],
['inosys.gaa3x433','Wells', 999999],
['inosys.gaa3xpkf','Hydrocarbon Fields', 3],
['inosys.u0uttr1z','Field Determinations', 3],
....

【问题讨论】:

标签: leaflet mapbox


【解决方案1】:

在选择“切换”按钮时,您可以运行一个遍历所有层并删除它们的函数,如下所示:

function toggleAllOff(){
  map.eachLayer(function (layer) {
    map.removeLayer(layer);
  });
}

您还可以将所有层添加到单个 LayerGroup,然后在该组上调用 clearLayers,如另一个问题 here 中所述。

编辑: 下面显示了在您的特定情况下工作所需的代码。这个方法删除了基础层,然后我将其重新添加回来,这有点 hacky。如果您不想删除基础层,可以快速检查一下。

link.onclick = function (e) {
    e.preventDefault();
    e.stopPropagation();

//Add the following
    if ($(this).text() == 'Toggle All Off') {
        map.eachLayer(function (layer) {
            map.removeLayer(layer);
        });
        map.addLayer(baseLayer);
    } else if (map.hasLayer(layer)) {

//The rest is your old code
        map.removeLayer(layer);
        map.removeLayer(gridlayer);
        map.removeControl(gridControl);
        map.removeControl(legendControl);
        this.className = '';

【讨论】:

  • 谢谢。我如何将上述函数插入到上述代码中?我还不太熟悉函数。现在我有一个用于切换关闭的 # 地标(['#','Toggle All Off', 1], )。我该如何调用这个函数?
  • 我需要查看更多代码。您的控制切换设置如何?你能做一个jsfiddle 来展示你现在拥有的东西吗?
  • Josh - 这是 jfiddle - 虽然我已经添加了所有适当的代码,但它在 jfiddle 上不起作用:jsfiddle.net/wz3h7ast/9
  • 好的,我更新了你的jsfiddle,用新的代码来说明这个想法。由于某种原因,它在 jsfiddle 上不起作用(我用 jsfiddle 修复了几个与 js 文件加载顺序相关的错误),但它适用于您的地图。我已经更新了我的答案以显示您需要的特定代码。你会想在它上面做更多的工作,但它显示了一般的想法。
  • 遍历选项并按照说明进行操作detailed here - Best way to unselect a select in jQuery?
猜你喜欢
  • 1970-01-01
  • 2022-06-13
  • 1970-01-01
  • 2018-04-20
  • 2016-07-10
  • 1970-01-01
  • 1970-01-01
  • 2019-10-22
  • 1970-01-01
相关资源
最近更新 更多