需求:
openlayers加载geoserver发布的三个wms图层,然后分别给三个图层添加注记弹框。
在网上搜了一天多一直没有找到openlayers怎么可以获取当前点击的图层名,今天终于在简书上看到一个评论里有人也在问同样的问题,惊于世界之小啊!于是我去人家主页一找,果然找到了解决方法。
刚开始做完之后发现一个bug,就是有的图层即使没有显示在地图上,点击的时候仍然会获取到这个图层的信息,原来是因为我把LAYERS写死了,所以不管图层有没有加载出来,它的source都在。所以最好把LAYERS动态加载,通过获取当前选中的多选框的值来加载LAYERS,(比如有10个多选框,每1个多选框控制1个图层,有3个选中的时候说明地图上加了3个图层,拿到这3个图层名)然后循环LAYERS即可。
这种方法的前提是服务里加了图层名,否则输出data里没有任何关于图层名的信息
var mapview = new ol.View({
center: [116.046881,38.883558],
projection: 'EPSG:4326',
zoom: 11,
maxZoom: 15,
minZoom: 5
})
var geoServer = true
if (geoServer) {
// 如果是 GeoServer 发布的 wms 服务做点击事件
// 多个图层的名称,