Aragon, câu trả lời của bạn chỉ cho tôi đi đúng hướng. Dưới đây là mã ô uế cuối cùng của tôi để thêm các lớp vào một mảng và sau đó kiểm soát chúng.
Trong tệp javascript, tôi đã khởi tạo bản đồ và sử dụng một chức năng để chuyển đổi mức độ hiển thị như sau:
//Layer array
var layersArray = [];
//Map view (Initial location)
var view = new ol.View2D({
// the view's initial state
center: ol.proj.transform([*Lat*,*Long*], 'EPSG:4326', 'EPSG:3857'),
zoom: 12
});
/* Map Initialization */
function initializeMap(){
var esribase = new ol.layer.Tile({
preload: Infinity,
source: new ol.source.XYZ({
url: 'http://server.arcgisonline.com/ArcGIS/rest/services/' +
'World_Topo_Map/MapServer/tile/{z}/{y}/{x}'
})
});
var poly1 = new ol.layer.Tile({
source: new ol.source.TileWMS({
url: 'http://localhost:8080/geoserver/wms',
params: {'LAYERS': '*Workspace*:*Layer*', 'TILED': true}
})
});
poly1.setVisible(false);
var poly2 = new ol.layer.Tile({
source: new ol.source.TileWMS({
url: 'http://localhost:8080/geoserver/wms',
params: {'LAYERS': '*Workspace*:*Layer*', 'TILED': true}
})
});
poly2.setVisible(false);
var poly3 = new ol.layer.Tile({
source: new ol.source.TileWMS({
url: 'http://localhost:8080/geoserver/wms',
params: {'LAYERS': '*Workspace*:*Layer*', 'TILED': true}
})
});
poly3.setVisible(false);
layersArray.push(esribase); //0
layersArray.push(poly1); //1
layersArray.push(poly2); //2
layersArray.push(poly3);//3
var map = new ol.Map({
controls: ol.control.defaults().extend([
new ol.control.ScaleLine({
units: ol.control.ScaleLineUnits.METRIC
})
]),
renderer: ol.RendererHint.CANVAS,
target: 'map',
layers: layersArray,
view:view
});
}
// Layer visibility function
function layerswitch(evt){
layersArray[evt.value].setVisible(evt.checked);
}
Trong HTML tôi đã sử dụng các hộp kiểm đơn giản (ví dụ về chuyển đổi poly1):
<input style='cursor:pointer' type="checkbox" value="1" onclick="javascript:layerswitch(this)" class="Cpoly1" name="poly1check" id="poly1check"/><label id="poly1checkLabel" for="poly1check">Polygon 1 Layer Switcher</label>