GIS的框选范围查询

开发工具与关键技术: SuperMap iDesktop 9D   GIS
作者:杨泽平
撰写时间:2020、5、12

SuperMap GIS的二次开发,学习了一些是三维图形、3D模型、制作地图、还有二维图形的基于JavaScript语言进行的二次开发。
GIS开发的实用功能有很多,下面是我写的一个范围查询,大致是选择一个区域,然后把你选择的区域里你所定义的要查询的目标全部都查询出来,并且设置他的显示样式和显示详细信息。
先建立一个矢量图层,代码如下所示,还有在初始化图层控件时加上区域查询,以及设置画图样式,如下图所示:

vectorLayer=new SuperMap.Layer.Vector("Vector Layer",{displayInLayerSwitcher: false });//Layer.Vector:新建一个矢量图层
 /*区域目标查询*/
  drawFeature = new SuperMap.Control.DrawFeature(vectorLayer,  SuperMap.Handler.Box, { "handlerOptions": { "cursorCSS": "crosshair" } });

drawFeature.events.on({“featureadded”:drawCompletedsd});
GIS的框选范围查询_第1张图片
GIS的框选范围查询_第2张图片
下面首先是onclick触发事件这个就不多说了,然后是查询区域选点-点的位置和设置查询目标,数据目标是:gzbyqChronicDisease 数据源里的 医院急救_point_1 数据集,查的主要是区域内的医院,这里可以根据自己需求查询其他的目标。详情代码如下:

 function BoxtoChoose() {
  drawFeature.activate();
 }
   //查询框选点-点的位置
function drawCompletedsd(obj) {//{Object} 对象绑定方面的回调。如果没有特定的对象,则默认是事件的object属性
drawFeature.deactivate();//deactivate使控件及其相关的处理事件(handler)失效。
 var feature = obj.feature;
feature.style = style;
vectorLayer.addFeatures(feature);//addFeatures添加热点信息。
var queryBounds = feature.geometry.bounds;//创建新的bounds对象。
var queryParam, queryByBoundsParams, queryService;
//FilterParameter设置源数据集中空间对象过滤条件,name是必设的参数,(图层名称格式:数据集名称@数据源别名)
queryParam = new SuperMap.REST.FilterParameter({ name:"医院急救_point_1@gzbyqChronicDisease "});
queryByBoundsParams = new SuperMap.REST.QueryByBoundsParameters({ queryParams: [queryParam], bounds: queryBounds });
//QueryByBoundsParameters:查询参数查询参数类。 该类用于设置 Bounds 查询的相关参数。
//queryParams查询过滤条件参数数组。
//bounds查询范围
queryService = new SuperMap.REST.QueryByBoundsService(url, {//Bounds 查询服务类。
    eventListeners: {
        //eventListeners:{Object} 监听器对象,在构造函数中设置此参数(可选),对 FieldStatisticService 支持的 两个事件 processCompleted 、processFailed 进行监听,相当于调用 SuperMap.Events.on(eventListeners)。
   "processCompleted": processCompleted,//processCompleted 服务端返回地形曲率计算结果触发该事件。
   "processFailed": processFailed// processFailed 服务端返回地形曲率计算结果失败触发该事件。
    }
});
queryService.processAsync(queryByBoundsParams);//processAsync:向服务端传递参数,然后服务端返回对象
}

然后是定点,设置显示图标的样式,根据自己需求添加想要的图标样式,以及设置查询弹出详情框要查询详情内容,详情代码如下图:
GIS的框选范围查询_第3张图片

设置完图标样式后就是详情框的内容了,设置详情框样式以及获取上面查询的详情框里的详细内容,详情框主要是当鼠标移入查询区域里的其中任意一个目标时,会弹出一个详细的信息框,详情代码如下图:
GIS的框选范围查询_第4张图片

最后到这代码就完成了,我们测试一下效果,首先点击触发按钮,然后在地图上画出你要查询的区域,松开鼠标触发完成查询,查询目标就显示出来了,把鼠标移到任意一个目标上可以弹出详情框显示目标的详细信息,这里我写的是方形的框,还有可以是圆形的或者多边形的,效果如下图所示:
GIS的框选范围查询_第5张图片

你可能感兴趣的:(GIS,gis)