SuperMap iClient For JavaScript周边查询

开发工具与关键技术:Visual Studio2015 javascript SuperMap iClient For JavaScript
作者:华境聪
撰写时间:2019/02/01
首先就是常规性的获取地图,然后添加klialin和layer的矢量图层和draw控件,利用draw控件在地图上获取经纬度的具体坐标,然后通过点击btnchaxun按钮触发获取半径和经纬度的值,进行自定义定位画圆形查询周边。

1.	var map, local, layer,    
2.	url = "http://localhost:8090/iserver/services/map-Zhuhaimap/rest/maps/County_R@Zhuhai";  
3.	function init() {  
4.	            //初始化地图  
5.	            map = new SuperMap.Map("map", {  
6.	                control: [  
7.	                       new SuperMap.Control.PanZoomBar(),//平移缩放控件  
8.	                       new SuperMap.Control.ScaleLine(),//比例尺控件  
9.	                       new SuperMap.Control.Navigation(),//鼠标拖拽控件                ],   
10.	            });  
11.	            //鼠标移动获取坐标值  
12.	            map.events.on({ "mousemove": getMousePositionPx });  
13.	            //初始化图层  
14.	            layer = new SuperMap.Layer.TiledDynamicRESTLayer("海珠地图", url, { transparent: true, cacheEnabled: true }, { maxResolution: "auto" });  
15.	            //监听图层信息加载完成事件  
16.	            layer.events.on({ "layerInitialized": addLayer });  
17.	            klialin = new SuperMap.Layer.Vector("周边分析图层", { displayInLayerSwitcher: false });  
18.	            //获取坐标  
19.	            draw = new SuperMap.Control.DrawFeature(klialin, SuperMap.Handler.Point);//查询多变形  
20.	            draw.events.on({ "featureadded": drawCom });//使用on()接口监听事件  
21.	            //添加控件  
22.	            map.addControl(draw);  
23.	        }  
24.	 function addLayer() {  
25.	            map.addLayers([layer,klialin]);  
26.	        }  
27.	 //获取中心点  
28.	        function drawCom(drawGeometryArgs) {  
29.	            var xCoordinate = drawGeometryArgs.feature.geometry.x;  
30.	            var yCoordinate = drawGeometryArgs.feature.geometry.y;  
31.	            $("#zxdwbk").val(xCoordinate + "-" + yCoordinate);  
32.	            draw.deactivate();//控件失效  
33.	        }  
34.	 //进行圆形定位  
35.	        $("#btnchaxun").click(function () {  
36.	            klialin.removeAllFeatures();  
37.	            markerLayer.clearMarkers();  
38.	            var kl = $("input[name='yiban']:checked")  
39.	            if ($("#zxdwbk").val() == "" || kl.length == 0) {  
40.	                alert('请选择中心点或者查询目标!')  
41.	                klialin.removeAllFeatures();  
42.	                markerLayer.clearMarkers();  
43.	            } else {  
44.	                $("#ZHZSrightban1").addClass("none");  
45.	                $("#ZHZSrightban").removeClass("none");  
46.	                    var li = $("#zxdwbk").val().split("-")[0];//获取input标签第1个索引的经度的值  
47.	                    var ijn = $("#zxdwbk").val().split("-")[1];//获取input标签第2个索引的纬度的值  
48.	                    var chen_centerPoint = new SuperMap.Geometry.Point(li, ijn);//用来生成线串的点数组  
49.	                    var rou = $("#bjwbk").val();//半径  
50.	                    var polygon = SuperMap.Geometry.Polygon.createRegularPolygon(chen_centerPoint, rou, 360, 360);//实例化多边形  
51.	                    var circleVector = new SuperMap.Feature.Vector(polygon);//矢量数据集  
52.	                    circleVector.style = {  
53.	                        strokeColor: "#3f7ee5",  
54.	                        fillColor: "#ccc",  
55.	                        strokeWidth: 2,  
56.	                        fillOpacity: 0.3,  
57.	                        strokeOpacity: 0.5  
58.	                    };  
59.	                    klialin.addFeatures(circleVector);  
60.	                    circleselect(circleVector);  
61.	        }      
62.	        })  
63.	       //绘制圆形成功请求  
64.	        function circleselect(circleVector) {  
65.	            var kl = $("input[name='yiban']:checked")  
66.	            for (var i = 0; i < kl.length; i++) {  
67.	                //查询条件  
68.	                var condition = "";  
69.	                //回调函数名  
70.	                var name = ""  
71.	                var name1 = ""  
72.	                if (kl[i].value == "医院") {  
73.	                    condition = "NAME like '%医院'"  
74.	                } else if (kl[i].value == "药店") {  
75.	                    condition = "NAME like '%药%'";  
76.	                }  
77.	                else if (kl[i].value == "社康") {  
78.	                    condition = "NAME like '%服务中心' or NAME like '%卫生站'";  
79.	                }  
80.	                // 查询。  
81.	                var queryParam = [], queryBySQLService, queryByGeometryParameters;  
82.	                // 查询参数传入所需要的信息  
83.	                queryParam.push(new SuperMap.REST.FilterParameter({  
84.	                    name: "P15医疗服务_point_1@Zhuhai",  
85.	                    attributeFilter: condition  
86.	                })),  
87.	                //查询几何对象  
88.	                queryByGeometryParameters = new SuperMap.REST.QueryByGeometryParameters({  
89.	                    queryParams: queryParam,  
90.	                    geometry: circleVector.geometry,  
91.	                });  
92.	                // SQL查询服务  
93.	                queryBySQLService = new SuperMap.REST.QueryByGeometryService(url, {  
94.	                    eventListeners: { "processCompleted": processHospital, "processFailed": processFailed }//processCompleted 进行监听  
95.	                });  
96.	                //提交服务请求,传递服务查询参数  
97.	                queryBySQLService.processAsync(queryByGeometryParameters);  
98.	            }  
99.	        }  

需要注意的是:
var polygon = SuperMap.Geometry.Polygon.createRegularPolygon(chen_centerPoint, rou, 360, 360);//实例化多边形。第一个是经纬度,第二个是半径,第三个是边数,第四个是旋转角度。

猜你喜欢

转载自blog.csdn.net/qq_41979469/article/details/86741762
今日推荐