也许你认为在 OL3 中不存在的 layerswitcher 控件,但在 OL2 中非常有用。
您可以在 OL3 中使用 Matt Walker 的控件。请按照以下步骤操作:
- 从https://github.com/walkermatt/ol3-layerswitcher下载
- 将其放在应用程序的同一文件夹中
- 所有图层都必须是 Title 属性,并且必须在使用 ol.layer.Group 的组内。您可以创建不同的组并在默认图层中设置属性 visible = true(其他为 false)。
例子:
<html><head><link rel="stylesheet" href="http://openlayers.org/en/v3.2.0/css/ol.css" type="text/css">
<script src="http://openlayers.org/en/v3.13.0/build/ol.js" type="text/javascript"></script>
<link rel="stylesheet" href="ol3-layerswitcher-master/src/ol3-layerswitcher.css" type="text/css"/>
<script src="ol3-layerswitcher-master/src/ol3-layerswitcher.js"></script>
<style>
#map{
position: absolute;
width: 100%;
height: 75%;
}
</style>
</head>
<body>
<h1> ol3-layerswitcher</h1>
<div id="map"></div>
<script>
var map = new ol.Map({
layers:
[new ol.layer.Group({
'title': 'Base maps',
layers: [
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: false,
source: new ol.source.OSM()
}),
new ol.layer.Tile({
title: 'Satellite',
type: 'base',
visible: true,
source: new ol.source.MapQuest({layer: 'sat'})
})
]
}),
new ol.layer.Group({
title: 'Overlays',
layers: [
new ol.layer.Tile({
title: 'Countries',
source: new ol.source.TileWMS({
url: 'http://demo.opengeo.org/geoserver/wms',
params: {'LAYERS': 'ne:ne_10m_admin_1_states_provinces_lines_shp'},
serverType: 'geoserver'
})
})
]
})
],
target: 'map',
view: new ol.View({
center: ol.proj.transform([2.1, 41.50], 'EPSG:4326', 'EPSG:3857'),
zoom: 8
})
});
var layerSwitcher = new ol.control.LayerSwitcher({
tipLabel: 'Leyenda'
});
map.addControl(layerSwitcher);
layerSwitcher.showPanel();
</script></body></html>
另一个网上例子:http://rawgit.com/walkermatt/ol3-layerswitcher/master/examples/layerswitcher.html
希望对你有帮助!