GIS功能--01

《点击选择地图定位》

操作与功能:点击地图定位控件,选择地图上的任意一点,获取到相应点的数据信息。

在这里插入图片描述
代码说明:首先创建一个图层,声明查询数据的类型和需要显示的图层,给一个注册事件
,当调用 active 方法激活时调用方法drawPointCompleted_selectPoint

//选择救助点
        function alarmPointSelection() {
            resultlistHide(); //隐藏搜索结果列表
            alarmMessageHide();//隐藏底部报警信息
            //移除报警图层所有点
            alarmMarkerLayer.clearMarkers();
            //移除地图所有点要素
            vectorLayer_WG.removeAllFeatures();
            drawPoint_signPoint.activate();//开启选择案发点标记选择
            //移除地图所以弹窗
            map.removeAllPopup();

        }
        $(function(){
         //选择事故地点
            drawPoint_signPoint = new SuperMap.Control.DrawFeature(//绘制要素类。
                vectorLayer_WG,//显示的图层
                SuperMap.Handler.Point//查询类型,点查询
                );
            //注册事件
            drawPoint_signPoint.events.on({ "featureadded": drawPointCompleted_selectPoint }//完成选择点回调方法
            );
            });
        

接收服务器传递的数据,调用deactivate注销方法,声明变量获取传递数据的几何对象,声明一个数组,设置查询参数。
{SuperMap.REST.FilterParameter} 空间关系分析中的源数据集查询参数。仅 ids、attributeFilter 和 fields 字段有效。
在这里插入图片描述

//选择事故地点完成事件
        function drawPointCompleted_selectPoint(drawGeometryArgs) {

            drawPoint_signPoint.deactivate();//停止选择案发点标记

            var geometry = drawGeometryArgs.feature.geometry;//获取几何对象
            console.log(geometry);
            geometryCase = geometry;
            var queryParams = [];//查询参数

            //空间关系分析中的参考数据集查询参数
            //push() 方法可向数组的末尾添加一个或多个元素,并返回新的长度。

            queryParams.push(new SuperMap.REST.FilterParameter({ name: "P02机场_point_1@FoShanChanCheng" }));
            queryParams.push(new SuperMap.REST.FilterParameter({ name: "P01政府机构_point_1@FoShanChanCheng" }));
            queryParams.push(new SuperMap.REST.FilterParameter({ name: "P03火车站地铁站_point_1@FoShanChanCheng" }));
            queryParams.push(new SuperMap.REST.FilterParameter({ name: "P04汽车站_point_1@FoShanChanCheng" }));
            queryParams.push(new SuperMap.REST.FilterParameter({ name: "P05公交车站_point_1@FoShanChanCheng" }));
            queryParams.push(new SuperMap.REST.FilterParameter({ name: "P06加油站加气站_point_1@FoShanChanCheng" }));
            queryParams.push(new SuperMap.REST.FilterParameter({ name: "P07停车场_point_1@FoShanChanCheng" }));
            queryParams.push(new SuperMap.REST.FilterParameter({ name: "P08高速服务区_point_1@FoShanChanCheng" }));
            queryParams.push(new SuperMap.REST.FilterParameter({ name: "P09收费站_point_1@FoShanChanCheng" }));
            queryParams.push(new SuperMap.REST.FilterParameter({ name: "P10金融服务_point_1@FoShanChanCheng" }));
            queryParams.push(new SuperMap.REST.FilterParameter({ name: "P11商业大厦_point_1@FoShanChanCheng" }));
            queryParams.push(new SuperMap.REST.FilterParameter({ name: "P12零售行业_point_1@FoShanChanCheng" }));
            queryParams.push(new SuperMap.REST.FilterParameter({ name: "P13宾馆酒店_point_1@FoShanChanCheng" }));
            queryParams.push(new SuperMap.REST.FilterParameter({ name: "P14休闲娱乐_point_1@FoShanChanCheng" }));
            queryParams.push(new SuperMap.REST.FilterParameter({ name: "P15医疗服务_point_1@FoShanChanCheng" }));
            queryParams.push(new SuperMap.REST.FilterParameter({ name: "P16科研教育_point_1@FoShanChanCheng" }));
            queryParams.push(new SuperMap.REST.FilterParameter({ name: "P18公园广场_point_1@FoShanChanCheng" }));
            queryParams.push(new SuperMap.REST.FilterParameter({ name: "P19住宅小区_point_1@FoShanChanCheng" }));
            queryParams.push(new SuperMap.REST.FilterParameter({ name: "P20综合信息_point_1@FoShanChanCheng" }));
            queryParams.push(new SuperMap.REST.FilterParameter({ name: "P21餐饮服务_point_1@FoShanChanCheng" }));
            queryParams.push(new SuperMap.REST.FilterParameter({ name: "P22汽车服务_point_1@FoShanChanCheng" }));
            queryParams.push(new SuperMap.REST.FilterParameter({ name: "P24风景名胜_point_1@FoShanChanCheng" }));
            queryParams.push(new SuperMap.REST.FilterParameter({ name: "P27港口码头_point_1@FoShanChanCheng" }));
            queryParams.push(new SuperMap.REST.FilterParameter({ name: "P26公共厕所_point_1@FoShanChanCheng" }));
            queryParams.push(new SuperMap.REST.FilterParameter({ name: "P25电讯服务_point_1@FoShanChanCheng" }));

            //Distance 查询参数类
            var queryByDistanceParams = new SuperMap.REST.QueryByDistanceParameters({//Distance 查询参数类构造函数。
                queryParams: queryParams,
                returnContent: true, //true 表示直接返回新创建的要素的 ID 数组;false 表示返回创建的 featureResult 资源的 URI
                distance: 1,//查询距离,默认为0,单位与所查询图层对应的数据集单位相同
                expectCount: 5,//期望返回结果记录个数
                isNearest: true,//是否为最近距离查询。
                geometry: geometryCase //用于查询的几何对象。
            });

            var queryByDistanceService = new SuperMap.REST.QueryByDistanceService(url);
            queryByDistanceService.events.on({
                "processCompleted": processCompleted_selectPoint,//成功调用方法
                "processFailed": processFailed_selectPoint
            });

            queryByDistanceService.processAsync(queryByDistanceParams);//发送到服务器
        }

监听查询成功还是失败,成功调用方法processCompleted_selectPoint,失败调用方法processFailed_selectPoint,发送到服务器。

 //救助查询地址
        function processCompleted_selectPoint(queryEventArgs) {//queryEventArgs 返回的结果
            var result = queryEventArgs.result;//服务端返回的查询结果数据。
            console.log(result);
            var i, j;
            var name = '';
            var address = "";
            for (i = 0; i < result.recordsets.length; i++) {
                name = '';
                for (j = 0; j < result.recordsets[i].features.length; j++) {
                    var feature = result.recordsets[i].features[j];//获取结果对象的矢量
                    var geometry = feature.geometry;//获取几何对象
                    console.log(geometry);
                    if (geometry.CLASS_NAME == SuperMap.Geometry.Point.prototype.CLASS_NAME) {//判断返回的数据是不是一个点数据

                        name = feature.data.NAME; //获取返回数据中的ADDRESS值(地址)
                        address = feature.data.ADDRESS;//获取返回数据中的ADDRESS值(地址)
                        //填充输入文本框(//案发地点)
                        $("#name").text(name);
                        $("#address").text(address);
                        //绑定X Y 坐标
                        $("#incidentX").val(geometryCase.x);
                        $("#incidentY").val(geometryCase.y);
                    }
                    else {
                        alert("无法确定点!");
                    }
                    if (name.trim() != '') {
                        break;
                    }
                }
                if (name.trim() != '') {
                    break;
                }
            }

            alarmMessageShow();//显示底部报警信息
            //添加点到地图
            addAlarmMarker(geometryCase.x, geometryCase.y, 1, name, address, "status");
            map.panTo(new SuperMap.LonLat(geometryCase.x, geometryCase.y));//地图定位中心点

            if (name.trim() == '') {
                alert('自动获取案发地点失败!请联系程序员');
            }
        }
 //查询地址失败
        function processFailed_selectPoint(er) {
            alert('失败,无法确定点!');
        }

吴川
2019年1月19日

猜你喜欢

转载自blog.csdn.net/weixin_44543217/article/details/86548538
GIS