GeoServer学习笔记-4、图层加载(WMSLayer详解)

官方API https://developers.arcgis.com/javascript/3/jsapi/wmslayer-amd.html#wmslayer1

使用WMSLayer加载WMS服务有两种方式:

function addWMSLayer() {
	require(["esri/config", "esri/layers/WMSLayer", "esri/layers/WMSLayerInfo"],
	    function (esriConfig,Extent, WMSLayer, WMSLayerInfo) {
	        //代理配置
	        esriConfig.defaults.io.proxyUrl = "/demo/proxy.jsp";
	        esriConfig.defaults.io.alwaysUseProxy = false;
	     
	        var wmsUrl = "http://localhost:8080/geoserver/wms";
	        var wmsLayer = new WMSLayer(wmsUrl, {
	            format: "png",
	            version: "1.3.0",
	            visibleLayers: ["tiger:tiger_roads"]
	        });
	        wmsLayer.on("error", function (response){
	            console.log("Error: %s", response.error.message);
	        });
	        map.addLayer(wmsLayer);
	    }
    );
}

              GeoServer跨域配置:https://blog.csdn.net/weixin_38670190/article/details/105038972

function addWMSLayer() {
	require(["esri/config","esri/geometry/Extent", "esri/layers/WMSLayer", "esri/layers/WMSLayerInfo"],
	    function (esriConfig,Extent, WMSLayer, WMSLayerInfo) {
			var wmsUrl = "http://localhost:8080/geoserver/wms";
	        //当被调用方服务器支持跨域(CORS)时,配置corsEnabledServers
	        esri.config.defaults.io.corsEnabledServers.push(wmsUrl);
	        
	        var wmsLayer = new WMSLayer(wmsUrl, {
	            format: "png",
	            version: "1.3.0",
	            visibleLayers: ["tiger:tiger_roads"]
	        });
	        wmsLayer.on("error", function (response){
	            console.log("Error: %s", response.error.message);
	        });
	        map.addLayer(wmsLayer);
	    }
    );
}

       该方式是先发送GetCapabilities 请求,获取服务器中的图层信息,再查找与visibleLayers中指定的图层,进行加载(GetMap)
              在这里插入图片描述

  • 方式二:
           在构造器中使用resourceInfo对象,在其layerInfos参数中配置WMS服务的图层信息。这种方式可以使用getFeatureInfo功能,只要将queryable和showPopup设置成true,添加代理(因为iframe标签中的地址不同源时会拒绝加载,点击劫持,所以需要使用代理来解决跨域问题),在getFeatureInfoURL地址上添加代理的url就可以实现getFeatureInfo和属性信息显示功能。
function addWMSLayer() {
     require(["esri/config","esri/geometry/Extent", "esri/layers/WMSLayer", "esri/layers/WMSLayerInfo"],
         function (esriConfig,Extent, WMSLayer, WMSLayerInfo) {
             //代理配置
			 esriConfig.defaults.io.proxyUrl = "/demo/proxy.jsp";
             esriConfig.defaults.io.alwaysUseProxy = false;
             var proxyUrl = window.location.origin + esriConfig.defaults.io.proxyUrl;
             var wmsUrl = "http://localhost:8080/geoserver/wms";
             var wmsLayer = new WMSLayer(wmsUrl, {
                 format: "png",
                 resourceInfo: {
                     extent: new Extent(-74.02722,40.684221,-73.907005,40.878178, {wkid: 4326}),
                     featureInfoFormat: "text/html",
                     // getFeatureInfoURL: wmsUrl,
                     getFeatureInfoURL: proxyUrl+"?"+wmsUrl+"?",
                     getMapURL: wmsUrl,
                     layerInfos: [
                         new WMSLayerInfo({
                             name: "tiger:tiger_roads",
                             queryable: true,
                             showPopup: true
                         })
                     ],
                     version: "1.3.0"
                 },
                 version: "1.3.0",
                 visibleLayers: ["tiger:tiger_roads"]
             });
             wmsLayer.on("error", function (response){
                 console.log("Error: %s", response.error.message);
             });
             map.addLayer(wmsLayer);
         }
     );
 }

       可以看到该方式没有发送GetCapabilities请求,而是直接发送GetMap获取地图。当点击地图时会执行getFeatureInfo查询和显示查询结果。
在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值