SuperMap iClient3D for WebGL加载iServer转发ArcGIS REST服务的WMS并获取属性与别名

作者:kk


文章目录

  • 一、iServer转发A的REST服务为WMS服务
  • 二、使用WebGL加载转发后的WMS服务
  • 三、获取到点击地图返回的信息并解析


一、iServer转发A的REST服务为WMS服务

步骤:快速创建服务->ArcGIS REST地图服务->输入ArcGIS REST地图服务地址eg:http://ip:6080/arcgis/rest/services/WMS/MapServer
SuperMap iClient3D for WebGL加载iServer转发ArcGIS REST服务的WMS并获取属性与别名_第1张图片
能力文档:
SuperMap iClient3D for WebGL加载iServer转发ArcGIS REST服务的WMS并获取属性与别名_第2张图片

二、使用WebGL加载转发后的WMS服务

			var wms = new Cesium.WebMapServiceImageryProvider({
            url : 'http://ip:8090/iserver/services/map-arcgis-WMS/wms111/%E5%9B%BE%E5%B1%82',
            layers : '0',
            parameters:{
                srs:"EPSG:0",
                format:"image/png",
                transparent:true
            },
            getFeatureInfoParameters:{info_format:'text/html',query_layers:['0.0'],srs:"EPSG:0"},
            enablePickFeatures:true,
            tilingScheme:new Cesium.WebMercatorTilingScheme({
                projection:new Cesium.GeographicProjection(),
            })
        })
        var layer = viewer.imageryLayers.addImageryProvider(wms);

注:这里的参数都是从wms能力文档里面获取的,小编的应用场景是平面场景,且加载的是高斯投影坐标系的数据,因此tilingScheme需要设置为WebMercatorTilingScheme(代表平面场景),projection设置为GeographicProjection(代表非墨卡托拉伸),其他的参数可以看一下帮助文档里面的释义:http://support.supermap.com.cn:8090/webgl/web/apis/3dwebgl.html
加载效果:
SuperMap iClient3D for WebGL加载iServer转发ArcGIS REST服务的WMS并获取属性与别名_第3张图片

三、获取到点击地图返回的信息并解析

var handler = new Cesium.ScreenSpaceEventHandler(viewer.scene.canvas);
        //设置鼠标左键单击回调事件
        handler.setInputAction(function (movement) {
            var ray = viewer.camera.getPickRay(movement.position);
            var cartesian = viewer.scene.globe.pick(ray, viewer.scene);
            if (cartesian) {
                var cartographic = Cesium.Cartographic.fromCartesian(cartesian);
                if (cartographic) {
                    var xy = new Cesium.Cartesian2();
                    var alti = viewer.camera.positionCartographic.height;
                    var level = getLevel(alti);
                    if (wms.ready) {
                        xy = wms.tilingScheme.positionToTileXY(cartographic, level, xy);
                        var promise = wms.pickFeatures(xy.x, xy.y, level, cartographic.longitude, cartographic.latitude);
                        Cesium.when(promise, function (data) {
                            console.log(data[0].data.children[0].getElementsByTagName("fields")[0])

                            var fields=data[0].data.children[0].getElementsByTagName("fields")[0];
                            var fieldAliases=data[0].data.children[0].getElementsByTagName("fieldAliases")[0];
                    //获取属性
                            console.log("fields-----------------------------------------------------------------------------------")
                            for(var i=0;i<fields.attributes.length;i++){
                                console.log(fields.attributes[i].name,'————————',fields.attributes[i].value)
                            }
                    //获取别名
                            console.log("fieldAliases-----------------------------------------------------------------------------------")
                            for(var i=0;i<fieldAliases.attributes.length;i++){
                                console.log(fieldAliases.attributes[i].name,'————————',fieldAliases.attributes[i].value)
                            }
                        });
                    }
                }
            }
        }, Cesium.ScreenSpaceEventType.LEFT_CLICK);

输出结果:
SuperMap iClient3D for WebGL加载iServer转发ArcGIS REST服务的WMS并获取属性与别名_第4张图片

你可能感兴趣的:(三维GIS,3d,arcgis,javascript)