一、引言

之前写过一些空间查询的方法,隔了半年重新使用的时候又重新查了下,总结了一些新的方法,供初级、中级高级使用者进行不同程度上的定制查询==

二、空间查询1——graphiclayer或featurelayer本图层点击查询

该方法是在添加要素后的graphiclayer或者featurelayer中添加点击事件,在点击事件中自动会获得要素信息,可以直接使用,比较傻瓜式的查询。

这里新建一个graphic,如果不新建操作的是之前的graphic,会把之前的graphic样式改掉

                    //空间查询第一种graphic_device.on("click",function(event){graphic_draft.clear();var graphic=new Graphic();graphic.setGeometry(event.graphic.geometry);graphic.setAttributes(event.graphic.attributes);var sms = new SimpleMarkerSymbol().setStyle(SimpleMarkerSymbol.STYLE_SQUARE).setColor(new Color([255,0,0,0.5]));graphic.setSymbol(sms);graphic_draft.add(graphic);});

点击后效果如下:

三、空间查询2——featurelayer的query features查询

方法思路:

1、创建点击坐标,以改点为基础创建一个圆作为查询条件;

2、待查询的featurelayer(仅限从arcgis服务中读取的featurelayer)图层+圆,空间查询;

该种方法必须使用featurelayer(arcgis服务)而不是graphiclayer,可以自己设置空间查询的参数,可以实现定制化。

//空间查询第二种map.on("click", function (evt) {graphic_draft.clear();//圆定义var circleSymb = new SimpleFillSymbol(SimpleFillSymbol.STYLE_NULL,new SimpleLineSymbol(SimpleLineSymbol.STYLE_SHORTDASHDOTDOT,new Color([105, 105, 105]),2), new Color([255, 255, 0, 0.25]));var circle = new Circle({center: evt.mapPoint,radius: 10});graphic_draft.add(new Graphic(circle,circleSymb));//查询var query = new Query();query.geometry = circle;//use a fast bounding box query. will only go to the server if bounding box is outside of the visible mapfeature_device.queryFeatures(query, function (response) {var feature;var features = response.features;//判断是否选中if (features.length != 0) {feature = features[0];var sms = new SimpleMarkerSymbol().setStyle(SimpleMarkerSymbol.STYLE_SQUARE).setColor(new Color([255,0,0,0.5]));feature.setSymbol(sms);graphic_draft.add(feature);}});});

效果图如下:

四、空间查询3——graphiclayer或featurelayer的graphics逐个判断查询

方法思路:

1、创建点击坐标,以改点为基础创建一个圆作为查询条件;

2、待查询featurelayer和graphiclayer中的graphics(可以使显示图层的graphics,可以是服务图层的graphics)+圆,空间查询;

这种方法直接将圆和每个graphic比较,更加自由,不过返回的graphic必须重新new,返回的都是引用对象。

                    //空间查询第三种map.on("click",function (evt) {graphic_draft.clear();//圆定义var circleSymb = new SimpleFillSymbol(SimpleFillSymbol.STYLE_NULL,new SimpleLineSymbol(SimpleLineSymbol.STYLE_SHORTDASHDOTDOT,new Color([105, 105, 105]),2), new Color([255, 255, 0, 0.25]));var circle = new Circle({center: evt.mapPoint,radius: 10});graphic_draft.add(new Graphic(circle,circleSymb));var graphics = graphic_device.graphics;for(var i= 0, total=graphics.length;i<total;i++){if(circle.contains(graphics[i].geometry)){var sms = new SimpleMarkerSymbol().setStyle(SimpleMarkerSymbol.STYLE_SQUARE).setColor(new Color([255,0,0,0.5]));var graphic=new Graphic(graphics[i].geometry,sms,graphics[i].attributes);graphic_draft.add(graphic);}}});

显示效果:

五、总结

  • 空间查询分类;
  • 图层级别点击查询;
  • 图层级别空间查询;
  • 要素级别空间查询;

Arcgis javascript那些事儿(十八)——空间查询的几种方法相关推荐

  1. Arcgis Javascript那些事儿(八)--图层获取与图层顺序

    这两天写一些系统基本图层的时候要涉及到同一个map切换layer的功能,这里主要涉及到了图层获取与图层顺序的问题,单独拿出来总结了下. 一.图层layer获取 1.通过id获取 首先从map中获取la ...

  2. mysql中逗号前的字符串_MySql逗号拼接字符串查询的两种方法

    下面两个函数的使用和FIND_IN_SET一样,使用时只需要把FIND_IN_SET换成FIND_PART_IN_SET或FIND_ALL_PART_IN_SET 例如某字段里是为1,2,3,4,5 ...

  3. 增加表空间大小的四种方法

    增加表空间大小的四种方法 Meathod1:给表空间增加数据文件 ALTER TABLESPACE app_data ADD DATAFILE 'D:\ORACLE\PRODUCT\10.2.0\OR ...

  4. javascript控制页面控件隐藏显示的两种方法

    javascript控制页面控件隐藏显示的两种方法,方法的不同之处在于控件隐藏后是否还在页面上占位 方法一: document.all<"PanelSMS">.styl ...

  5. 如何使用计算机查询本机网卡信息,本机mac地址查询的三种方法

    现在电脑非常流行,大部分的学生以及白领或者说每一个家庭几乎都有一台电脑.不过大家对于电脑的认识却没有这么高的普及度.很多人对于它的了解仅仅停留在使用电脑看视频用软件的层面,对于电脑自身的认识不是很多. ...

  6. SCI期刊名缩写查询的三种方法

    SCI期刊名缩写查询的三种方法 在参考文献中,常会用到期刊的缩写名,这里介绍三种用于查询SCI期刊名缩写的方法,便于查询各个期刊的缩写. 1.方法一 进入justscience查询, https:// ...

  7. 验证win10下解决某些word文档提示”内存或磁盘空间不足”的几种方法

    验证win10下解决某些word文档提示"内存或磁盘空间不足"的几种方法 编者:李国帅 qq:9611153 微信lgs9611153 时间:2020-03-11 背景原因: 前段 ...

  8. mysql去重查询的三种方法

    文章目录 前言 一.插入测试数据 二.剔除重复数据方法 1.方法一:使用distinct 2.方法二:使用group by 3.方法三:使用开窗函数 总结 前言 数据库生成环境中经常会遇到表中有重复的 ...

  9. 苹果手机序列号查询的4种方法!

    案例:苹果手机序列号怎么看? [朋友们,我从某鱼入手了一部旧的苹果手机,想验证下它的真实性,所以想问下关于苹果手机序列号是在哪里看的?] 苹果手机序列号是每部苹果手机的唯一标识符,通过它可以验证手机的 ...

最新文章

  1. C++11中头文件chrono的使用
  2. 一文读懂GoogLeNet神经网络 | CSDN博文精选
  3. 【程序员比赛】CISCN 2021 ezj4va与Fix思路
  4. MySQL LIMIT:限制查询结果的记录条数
  5. 3.2.2 OS之请求分页管理方式(请求页表、缺页中断机构、地址变换机构)
  6. java 修改ip_如何用脚本快速修改IP地址(Netsh)
  7. 模拟人生4修改服务器,【M4分享】PS4主机版模拟人生4的作弊码
  8. 千万条数据,Stack Overflow是如何实现快速分页的
  9. cmd控制屏幕光标_电脑控制手机?上班时间愉快尽情地玩手机吧!它值得您拥有!...
  10. 腾讯阿里都在用!机器学习最热研究方向入门,附学习路线图
  11. pandas DateTime funcs
  12. Linux Frp内网穿透
  13. SQLAlchemy学习-1.环境准备与基础使用
  14. 奔跑吧,旅行商 - 当机器学习遇上组合优化
  15. 手机框架_移动端框架_跨平台_汇总_哪个好
  16. 计算机处理器i3 i5,i3与i5以及i7处理器有什么区别?
  17. 计算机重启没有用户名,电脑重启之后图标没了怎么办
  18. 将VOC格式标注文件转换为Yolo格式
  19. SSO: Basic-Auth OAuth2 SAML OpeanID
  20. NBUT - 1225~NEW RDSP MODE I(快速幂+倒推)

热门文章

  1. vim设置tab宽度为4_vim编辑器VimScript插件开发系列一「定制Vim 3」
  2. mpvue 微信小程序设置背景音乐
  3. 计算机编码中进制的区别,计算机中的进制和编码(转载)
  4. 打开android studio项目,为什么我们没有一个文件来打开Android Studio项目?
  5. Visual Studio 中 Tab 转换为空格的设置
  6. 界面无小事(六):来做个好看得侧拉菜单!
  7. python中关于字典的基础运用
  8. 7.15 HTMl + CSS 笔记整理(一)
  9. java编译器源码详解_已更新至第8章 | LLVM 编译框架详解
  10. 脚本清理maven项目打包残留文件,节省磁盘空间