vue openlayers一些图层操作(获取指定名字的图层等)
vue openlayers一些图层操作(获取指定名字的图层等)
注意: 添加图层时要指定图层名称, 如:
var source = new ol.source.TileSuperMapRest({
url: '',
})
var layer = new ol.layer.Tile({
source: source,
projection: 'EPSG:4326',
name: '图层名称', // 设置图层名称
zIndex: 100,
})
map.addLayer(layer)
- 图层的一些操作
- 判断地图上是否有指定图层
- 判断图层是显示状态还是隐藏状态
- 获取指定名字的图层
- 获取地图上所有图层名称
/**
* 判断地图上是否有指定图层
* @param {*} map
* @param {String} layerName 图层名
*/
isLayerInMap(map, layerName) {
var layers = map.getLayers().getArray()
// layer.getVisible()
for (let index = 0; index < layers.length; index++) {
const layer = layers[index]
if (layerName && layer.get(layerName) == layerName) {
return true
}
}
return false
}
/**
* 判断图层是显示状态还是隐藏状态
* @param {*} map
* @param {String} layerName 图层名
* @returns true/false
*/
isLayerVisible(map, layerName) {
var layers = map.getLayers().getArray()
for (let index = 0; index < layers.length; index++) {
const layer = layers[index]
if (layerName && layer.get('name') == layerName && layer.getVisible()) {
return true
}
}
return false
}
/**
* 获取指定名字的图层
* @param {*} map
* @param {String} layerName 图层名
* @returns
*/
getLayerByName(map, layerName) {
var layers = map.getLayers().getArray()
for (let index = 0; index < layers.length; index++) {
const layer = layers[index]
if (layerName && layer.get('name') == layerName) {
return layer
}
}
return null
}
/**
* 获取地图上所有图层名称
* @param {*} map
* @returns 图层名称数组
*/
getAllLayerNames(map) {
let res = []
var layers = map.getLayers().getArray()
for (let index = 0; index < layers.length; index++) {
const layer = layers[index]
if (layer.get('name')) {
res.push(layer.get('name'))
}
}
return res
}