簡體   English   中英

OpenLayers 3-幾個WMS圖層,如何僅從可見圖層獲取功能信息?

[英]OpenLayers 3 - Several WMS layers, how to get Feature Info only from visible ones?

我有一個Openlayers地圖,其中包含幾個WMS圖層,我想通過這些地圖通過“ getGetFeatureInfoUrl”請求要素信息。 可以在層樹中打開/關閉層的可見性。 我想點擊地圖上的某個位置:

  • 僅獲取當前可見圖層的要素信息
  • 並且,如果在所選位置有多個圖層,則獲取所有圖層的要素信息。

我使用了OpenLayers網站上的示例代碼。 我嘗試了此代碼位的變體

var url = layers[2].getSource().getGetFeatureInfoUrl(
    evt1.coordinate, viewResolution, 'EPSG:3857', {
        'INFO_FORMAT': 'text/html',
            'FEATURE_COUNT': '300'
    });

喜歡

var url = layers[].getSource().getGetFeatureInfoUrl(var url = layers[1,2].getSource().getGetFeatureInfoUrl( ,但要么不傳遞任何要素信息,要么僅傳遞最后一層-無論是否傳遞是否可見。

我在這里創建了帶有兩個示例層的JSFiddle: http : //jsfiddle.net/kidalex/j34xzaa3/5/

之前曾問過類似的問題,例如: https : //gis.stackexchange.com/questions/114297/querying-multiple-wms-layers-in-ol3-and-adding-to-a-single-popup-window 但我無法理解如何應用解決方案(此處為JS / OL新手)。

您應該遍歷各層,並且僅在可見時調用getFeatureInfo,而不是基礎層,請嘗試以下操作:

map.on('singleclick', function (evt1) {
    document.getElementById('info').innerHTML = '';
    var viewResolution = /** @type {number} */
    (view.getResolution());
    var url = '';
    document.getElementById('info').innerHTML ='';
    layers.forEach(function (layer, i, layers) {
        if (layer.getVisible() && layer.get('name')!='Basemap') {
            url = layer.getSource().getGetFeatureInfoUrl(evt1.coordinate, viewResolution, 'EPSG:3857', {
                'INFO_FORMAT': 'text/html',
                    'FEATURE_COUNT': '300'
            });
            if (url) {
                document.getElementById('info').innerHTML +=
                    '<iframe seamless src="' + url + '"></iframe>';
            }
        }
    });

});

編輯:語法

暫無
暫無

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

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