我是靠谱客的博主 魁梧摩托,最近开发中收集的这篇文章主要介绍Openlayers 获取图层组属性信息 并根据图层组配置地图图层,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

想像arcgis一样发布一个地图然后在前端分图层显示,但查了一堆资料都说是不可能的,查询图层组的属性信息只会把图层组当做一个普通图层来返回并不会把图层组中的图层分别显示出来,于是本人使用了两次ajax请求最终实现了该需求

第一步 获取图层组的图层描述解析typeName

 $.ajax({
url: url + '?service=WMS&version=1.1.1&request=DescribeLayer&layers=' + layers,
dataType: 'xml',
timeout: 1000,
cache: false,
//禁用缓存
contentType: "application/x-www-form-urlencoded; charset=UTF-8",
error: function (xml) {
console.log("加载XML文档出错!")
},
success: function (layerGroupData) {
var modleLayersList = [];
$(layerGroupData).find("LayerDescription").each(function () {
var item = $(this);
modleLayersList.push(item.find("Query").attr("typeName"));
})
if (modleLayersList.length > 0) {
//第二步骤
}
}
})

第二步 根据解析出来的typename去逐个添加图层


var workSpace = modleLayersList[0].split(":")[0];
$.ajax({
url: url + '?service=wms&version=1.1.1&request=GetCapabilities',
type: 'POST',
dataType: 'text',
timeout: 1000,
cache: false,
//禁用缓存
contentType: "application/x-www-form-urlencoded; charset=UTF-8",
error: function (xml) {
console.log("加载XML文档出错!")
},
success: function (xmlResult) {
$(xmlResult).find("Layer").find("Layer").each(function () {
var item = $(this);
//缩放到当前层
if (item.find("Name").eq(0).text() == layers.split(":")[1]) {
mapHelper.map.getView().fit(ol.proj.transformExtent([Number(item.find("BoundingBox").attr("minx")), Number(item.find("BoundingBox").attr("miny")), Number(item.find("BoundingBox").attr("maxx")), Number(item.find("BoundingBox").attr("maxy"))], item.find("BoundingBox").attr("SRS"), item.find("BoundingBox").attr("SRS")), { duration: 300 })
mapHelper.options.fullMap = [Number(item.find("BoundingBox").attr("minx")), Number(item.find("BoundingBox").attr("miny")), Number(item.find("BoundingBox").attr("maxx")), Number(item.find("BoundingBox").attr("maxy"))];
}
//逐个添加图层
if (arguments[0] != 0 && item.attr("queryable") == "1") {
if (modleLayersList.indexOf(item.find("name").eq(0).text()) >= 0 || modleLayersList.indexOf(workSpace + ":" + item.find("name").eq(0).text()) >= 0) {
var singleSourceOption = {
url: url,
params: {
'FORMAT': 'image/png',
'VERSION': '1.1.1',
tiled: false,
"LAYERS": item.find("name").eq(0).text(),
"exceptions": 'application/vnd.ogc.se_inimage'
}
};
//添加图层 巴拉巴拉
)
}
}
});

 

最后

以上就是魁梧摩托为你收集整理的Openlayers 获取图层组属性信息 并根据图层组配置地图图层的全部内容,希望文章能够帮你解决Openlayers 获取图层组属性信息 并根据图层组配置地图图层所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(48)

评论列表共有 0 条评论

立即
投稿
返回
顶部