openlayers 点击geoserve发布的WMS数据获取属性信息

15 篇文章 4 订阅

一、普通web工程写法

/**
 * 获取WMS服务的属性数据
 * @param map
 * @param wmsSource
 */
function getWMSInfo(map,wmsSource){
        var eventKey = map.on('singleclick', function(evt) {
            $(".testMenu").hide()
            var view = map.getView()
            var viewResolution = /** @type {number} */ (view.getResolution());
            var url = wmsSource.getGetFeatureInfoUrl(
                evt.coordinate, viewResolution, 'EPSG:4326',
                {'INFO_FORMAT': 'application/json'});
            //封装的ajax请求
            getData(url,function (res) {
                if(res.features.length>0){
                    var data = res.features[0].properties
                    //获取图层ID
                    data.layerId = wmsSource.layerId
                }
            })
        });

        return eventKey;
}

注意:

 //获取图层ID
 data.layerId = wmsSource.layerId 

这句话就是为了获取加载wms服务时候设置的图层id,主要用来区分鼠标获取那类型数据,然后展示不同的弹出框

/**
 * 说明:请求后台
 * @param url
 * @param success
 * @param error
 */
function getData(url,success,error) {
    $.ajax({
        type: "POST",
        url:url ,
        dataType: "json",
        success: function (result){
         if(success) success(result)
        },
        error: function (err) {
            if(error) error(err)
        }
    })
}

二、vue的写法

/**
 * 说明:获取WMS服务数据的要素信息
 * @param {*} map         必填,对象,地图对象
 * @param {*} wmsSource   必填,对象,WMS服务的数据源
 */
export function getWMSInfo(map,wmsSource){
    // return new Promise((resolve,reject)=>{
     var eventKey =   map.on('singleclick', function(evt) {
            let view = map.getView()
            var viewResolution = /** @type {number} */ (view.getResolution());
            var url = wmsSource.getGetFeatureInfoUrl(
              evt.coordinate, viewResolution, 'EPSG:4326',
              {'INFO_FORMAT': 'application/json'});
            if (url) {
                axios.get(url).then(res=>{
                    console.log(res)
                    // resolve(res.data.features,eventKey)
                }).catch(error=>{
                    // reject("查询失败")
                })
            }
        });
        // resolve(eventKey)
        console.log("点击函数",eventKey)
        return eventKey
    // }) 
}

 

  • 1
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: 要在OpenLayers中加载GeoServer的WMS服务,需要按照以下步骤操作: 1. 创建一个OpenLayers的地图对象。 2. 创建一个WMS图层对象,并指定GeoServer的WMS服务地址、图层名称、投影方式等参数。 3. 将WMS图层对象添加到地图对象中。 4. 设置地图的中心点和缩放级别。 5. 在HTML页面中显示地图。 具体的代码实现可以参考OpenLayers的官方文档或者其他相关教程。 ### 回答2: OpenLayers是一个流行的前端JavaScript库,用于展示Web地图,可以通过加载Geoserver的WMS服务来显示地图。WMS服务为Web开发者提供了一个基于标准HTTP的图像地图服务Geoserver是一个开源的地图服务器,可以提供WMS服务。在使用OpenLayers加载Geoserver的WMS时,需要执行以下步骤: 1. 引入OpenLayers的JavaScript库文件和样式表。 ``` <script src="https://openlayers.org/en/v4.6.5/build/ol.js"></script> <link rel="stylesheet" href="https://openlayers.org/en/v4.6.5/css/ol.css" type="text/css"> ``` 2. 创建一个容器,用于展示地图。 ``` <div id="map" class="map"></div> ``` 3. 创建一个OpenLayers的地图对象,并指定地图容器。 ``` var map = new ol.Map({ target: 'map', layers: [], view: new ol.View({ center: [0, 0], zoom: 2 }) }); ``` 4. 创建一个WMS图层,并添加到地图中。 ``` var wmsLayer = new ol.layer.Image({ source: new ol.source.ImageWMS({ url: 'http://localhost:8080/geoserver/wms', params: { 'LAYERS': 'topp:states' }, ratio: 1, serverType: 'geoserver' }) }); map.addLayer(wmsLayer); ``` 其中,url为Geoserver WMS服务的地址,params为WMS服务中需要展示的图层。 5. 刷新地图。 ``` map.updateSize(); ``` 6. 运行完整代码。 ``` <!DOCTYPE html> <html> <head> <title>OpenLayers with Geoserver WMS</title> <link rel="stylesheet" href="https://openlayers.org/en/v4.6.5/css/ol.css" type="text/css"> <style> .map { height: 500px; } </style> <script src="https://openlayers.org/en/v4.6.5/build/ol.js"></script> </head> <body> <div id="map" class="map"></div> <script> var map = new ol.Map({ target: 'map', layers: [], view: new ol.View({ center: [0, 0], zoom: 2 }) }); var wmsLayer = new ol.layer.Image({ source: new ol.source.ImageWMS({ url: 'http://localhost:8080/geoserver/wms', params: { 'LAYERS': 'topp:states' }, ratio: 1, serverType: 'geoserver' }) }); map.addLayer(wmsLayer); map.updateSize(); </script> </body> </html> ``` 通过以上步骤,就可以成功加载Geoserver的WMS服务,展示地图。需要注意的是,在使用Geoserver的WMS服务时,需要确保服务是运行正常的,并且所使用的图层是存在的。 ### 回答3: OpenLayers是WebGIS开发中常用的一种开发工具,它可以通过加载各种数据源实现空间数据的可视化呈现,其中WMS是一种常用的数据源。 要加载geoserver发布WMS,需要使用OpenLayersWMS图层类(ol.layer.Tile),它通过向geoserver发送WMS请求,在地图上绘制WMS图层。 下面是实现的步骤: 1. 引入OpenLayers库和样式文件: ``` <link rel="stylesheet" href="https://openlayers.org/en/v4.6.5/css/ol.css"> <script src="https://cdn.jsdelivr.net/npm/ol/dist/ol.js"></script> ``` 2. 创建地图容器和地图对象: ``` var map = new ol.Map({ target: 'map', // 地图容器id layers: [], // 初始图层为空 view: new ol.View({ center: [0, 0], // 初始中心点坐标 zoom: 0 // 初始缩放等级 }) }); ``` 3. 创建WMS图层: ``` var layers = [ // 创建geoserver发布WMS图层(注意url和params的配置) new ol.layer.Tile({ source: new ol.source.TileWMS({ url: 'http://localhost:8080/geoserver/wms', params: { 'LAYERS': 'topp:states', // 图层名称 'TILED': true } }) }) ]; ``` 4. 添加图层到地图: ``` map.addLayers(layers); ``` 5. 在html文件中添加地图容器: ``` <div id="map"></div> ``` 可以根据需要修改各个参数的值,从而实现自己所需的WMS图层加载效果。同时,需要注意geoserver发布WMS服务需要在geoserver中配置,确保参数设置正确无误。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值