簡體   English   中英

打開圖層3層可見性 - 傳遞變量的問題

[英]Open Layers 3 layer visibility - problems passing variables

我有一個非常基本的功能,打開我在地圖上的圖層。

這是初始化圖層的代碼:

var featurelayer;

featurelayer = new ol.layer.Tile({
      name: 'featurelayer',
      source: new ol.source.TileWMS({url: 'http://myserver/geoserver/wms',
      serverType: 'geoserver',
      params:{
        'LAYERS':"layergroup:mylayer", 'TILED':true
      }
      }),
      visible: false
      });
map.addLayer(featurelayer);

我的網站上有一個列表項,當點擊時會激活我用來嘗試打開圖層的功能。 我的html和jQuery函數如下:

<li class='last'><a href='#'><i class="fa fa-circle text-info"></i><span> Flood Zone 3b (Functional Floodplain)</span></a></li>

$("a.layer").click(function() {
  map.getLayers().forEach(function(layer) {
    if (layer.get('name') === this.id) {
      featurelayer.setVisible(true);
    }
  });
});

此代碼實際上有效,它在地圖上顯示圖層。 我的問題是我將有多個圖層,理想情況下,我希望能夠將我的列表項中的ID傳遞給我的setVisible事件,該ID與圖層的名稱相同。

我似乎無法解決如何執行此操作,因為我的控制台日志始終返回undefined; 我已經嘗試創建一個變量,我相當於'this.id',但這不起作用 - 我是否需要通過我的點擊功能傳遞我的ID? 如果注冊我的圖層名稱與列表項ID相匹配,為什么我收到未定義的錯誤?

謝謝你提供的所有幫助!

是不是this.id嘗試訪問'layer.id'(可能是未定義的),因為它在forEach循環中?

嘗試在進入循環之前獲取id:

 $("a.layer").click(function () {
        var lid = $(this).attr('id');
        map.getLayers().forEach(function (layer) {
            if (layer.get('name') == lid) {
                layer.setVisible(true);
            }
        });
    });

編輯:這是你需要的嗎? http://jsfiddle.net/fbma/3z1L6ttn/1/

我已經為兩個li項添加了id,click事件與class'last'有關。 此外,還可以在迭代的圖層對象上設置可見性。

我接受了Fbma的回答並添加了幾個if語句,通過設置一個調用getVisible()方法的變量來檢查圖層是否已經可見,所以下面的代碼現在正在工作,謝謝你的幫助!

$(".layerlist").click(function() {
        var lid = $(this).attr('id');
        map.getLayers().forEach(function (layer) {
            if (layer.get('name') == lid) {
              var visibility = layer.getVisible();
              if (visibility == false) {
                layer.setVisible(true);
              }
              if (visibility == true) {
                layer.setVisible(false);
              }
            }

        });
    });

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM