mirror of
https://github.com/walkermatt/ol-layerswitcher.git
synced 2026-01-18 14:38:42 +00:00
132 lines
3.8 KiB
JavaScript
132 lines
3.8 KiB
JavaScript
(function () {
|
|
var map = new ol.Map({
|
|
target: 'map',
|
|
layers: [
|
|
new ol.layer.Group({
|
|
title: 'Base maps',
|
|
layers: [
|
|
new ol.layer.Group({
|
|
title: 'Water color with labels',
|
|
type: 'base',
|
|
combine: true,
|
|
visible: false,
|
|
layers: [
|
|
new ol.layer.Tile({
|
|
source: new ol.source.Stamen({
|
|
layer: 'watercolor'
|
|
})
|
|
}),
|
|
new ol.layer.Tile({
|
|
source: new ol.source.Stamen({
|
|
layer: 'terrain-labels'
|
|
})
|
|
})
|
|
]
|
|
}),
|
|
new ol.layer.Tile({
|
|
title: 'Water color',
|
|
type: 'base',
|
|
visible: false,
|
|
source: new ol.source.Stamen({
|
|
layer: 'watercolor'
|
|
})
|
|
}),
|
|
new ol.layer.Tile({
|
|
title: 'OSM',
|
|
type: 'base',
|
|
visible: true,
|
|
source: new ol.source.OSM()
|
|
})
|
|
]
|
|
}),
|
|
new ol.layer.Group({
|
|
title: 'Overlays',
|
|
fold: 'open',
|
|
layers: [
|
|
new ol.layer.Image({
|
|
title: 'Countries',
|
|
source: new ol.source.ImageArcGISRest({
|
|
ratio: 1,
|
|
params: { LAYERS: 'show:0' },
|
|
url:
|
|
'https://ons-inspire.esriuk.com/arcgis/rest/services/Administrative_Boundaries/Countries_December_2016_Boundaries/MapServer'
|
|
})
|
|
}),
|
|
new ol.layer.Group({
|
|
title: 'Census',
|
|
fold: 'open',
|
|
layers: [
|
|
new ol.layer.Image({
|
|
title: 'Districts',
|
|
source: new ol.source.ImageArcGISRest({
|
|
ratio: 1,
|
|
params: { LAYERS: 'show:0' },
|
|
url:
|
|
'https://ons-inspire.esriuk.com/arcgis/rest/services/Census_Boundaries/Census_Merged_Local_Authority_Districts_December_2011_Boundaries/MapServer'
|
|
})
|
|
}),
|
|
new ol.layer.Image({
|
|
title: 'Wards',
|
|
source: new ol.source.ImageArcGISRest({
|
|
ratio: 1,
|
|
params: { LAYERS: 'show:0' },
|
|
url:
|
|
'https://ons-inspire.esriuk.com/arcgis/rest/services/Census_Boundaries/Census_Merged_Wards_December_2011_Boundaries/MapServer'
|
|
})
|
|
})
|
|
]
|
|
})
|
|
]
|
|
})
|
|
],
|
|
view: new ol.View({
|
|
center: ol.proj.transform([-2.284, 55.692], 'EPSG:4326', 'EPSG:3857'),
|
|
zoom: 9
|
|
})
|
|
});
|
|
|
|
var layerSwitcher = new ol.control.LayerSwitcher({
|
|
activationMode: 'click',
|
|
startActive: true,
|
|
groupSelectStyle: 'children' // Can be 'children' [default], 'group' or 'none'
|
|
});
|
|
map.addControl(layerSwitcher);
|
|
|
|
// Add a select input to allow setting the groupSelectStyle style
|
|
|
|
function createOption(name) {
|
|
var option = document.createElement('option');
|
|
option.value = name;
|
|
option.text = name;
|
|
return option;
|
|
}
|
|
|
|
var container = document.createElement('div');
|
|
container.id = 'group-select-style';
|
|
|
|
var label = document.createElement('label');
|
|
label.innerText = 'groupSelectStyle: ';
|
|
label.htmlFor = 'group-select-style-input';
|
|
|
|
var select = document.createElement('select');
|
|
select.id = 'group-select-style-input';
|
|
select.add(createOption('children'));
|
|
select.add(createOption('group'));
|
|
select.add(createOption('none'));
|
|
|
|
select.onchange = function (_e) {
|
|
map.removeControl(layerSwitcher);
|
|
layerSwitcher = new ol.control.LayerSwitcher({
|
|
activationMode: 'click',
|
|
startActive: true,
|
|
groupSelectStyle: select.value
|
|
});
|
|
map.addControl(layerSwitcher);
|
|
};
|
|
|
|
container.appendChild(label);
|
|
container.appendChild(select);
|
|
|
|
document.body.appendChild(container);
|
|
})();
|