簡體   English   中英

如何在 Openlayers 中禁用圖層

[英]how to disable layer in Openlayers

我在 LayerSwitcher 中有一些層。我想顯示它們,但我想禁用其中一個,我的意思是它必須在 layerSwitcher 中可見,但您將無法與之交互。 這是我的 LayerSwitcher:例如,我想在黃色圖層上禁用。 這是我添加圖層的代碼的一部分

    stationsLayer = new ol.layer.Vector({
        source: stationsSource,
        visible: true,
        title: "Estaciones",
        style: styleFunction,
    });
    tiffRaster = new ol.layer.Image({
        title: 'PGA(gal)',
        // extent: [-180, -90, -180, 90],
        source: new ol.source.ImageWMS({
            url: 'http://url/geoserver/faml/wms',
            params: {
                'LAYERS': 'faml:' + f
            },
            ratio: 1,
            serverType: 'geoserver'
        })
    });

    map.addLayer(tiffRaster);
    map.addLayer(stationsLayer);

圖層切換器

 var osmLayer = new ol.layer.Tile({ source: new ol.source.OSM(), title: "OSM" }); var stamenLayer = new ol.layer.Tile({ source: new ol.source.Stamen({ layer: "terrain", maxZoom: 18 }), visible: false, title: "Stamen" }); var baseLayerGroup = new ol.layer.Group({ layers: [osmLayer, stamenLayer] }) var map = new ol.Map({ target: document.getElementById("map"), view: new ol.View({ center: ol.proj.fromLonLat([8, 50]), zoom: 5 }) }); map.setLayerGroup(baseLayerGroup); const radioButtons = getAllRadioButtons(); for (var i = 0; i < radioButtons.length; i++) { radioButtons[i].addEventListener("change", function(e) { var target = e.currentTarget; baseLayerGroup.getLayers().forEach(function(layer) { layer.setVisible(layer.get("title") === target.value); }); }); } function getAllRadioButtons() { var arrInput = document.getElementsByTagName("input") var arrRadio = []; var j = 0; for (var i = 0; i < arrInput.length; i++) { if (arrInput[i].type == "radio") { arrRadio[j] = arrInput[i]; j++; } } return arrRadio; }
 * { box-sizing: border-box; } body { margin: 0; padding: 0; }.grid-container { display: grid; grid-template-columns: 20vw 80vw; grid-template-rows: 100vh; }.sidebar { margin-left: 15px; }.map { width: 100%; height: 100%; overflow: hidden; }
 <link href="https://cdn.jsdelivr.net/gh/openlayers/openlayers.github.io@master/en/v6.8.1/css/ol.css" rel="stylesheet" /> <script src="https://cdn.jsdelivr.net/gh/openlayers/openlayers.github.io@master/en/v6.8.1/build/ol.js"></script> <div class="grid-container"> <div class="grid-1"> <div class="sidebar"> <h2> Base Layers </h2> <div> <input type="radio" value="OSM" name="base" checked> <label for="OSM">OpenStreetMap</label> </div> <div> <input type="radio" value="Stamen" name="base"> <label for="Stamen">Terrain</label> </div> </div> </div> <div class="grid-2"> <div id="map" class="map" tabindex="0"></div> </div> </div>

tiffRaster.setVisible(false)

tiffRaster.setVisible(true)

應該這樣做。

暫無
暫無

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

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