图形查询时过滤掉条件显示中不显示的元素

在前面的博文中,说到了当设置条件显示DynamicLayer子图层和FeatureLayer里的元素时,图形查询时不能自动过滤掉不显示的元素,本文就是针对这个问题,这个问题可以通过图形条件查询一起执行的方式来实现,即对Query.Geometry赋值查询图形,而Query.Where则赋条件显示的条件字符串。

条件显示部分,以“条件显示FeatureLayer要素内容”博文问基础,这里只讨论图形过滤查询的内容。

1.创建QueryTask和Query对象  

QueryTask task = new QueryTask();
task.ExecuteCompleted += new EventHandler<QueryEventArgs>(task_ExecuteCompleted);//查询成功处理事件,查询结果通过其参数获取,这里不赘述,网上教程很多
task.Failed += new EventHandler<TaskFailedEventArgs>(task_Failed);//查询失败处理事件
task.Url = "http://localhost/arcgis/rest/services/BeiJingMap/FeatureServer/1";//查询的图层
Query query = new Query();
query.SpatialRelationship = SpatialRelationship.esriSpatialRelIntersects;//查询图形和目标元素的拓扑关系,在“点查询点的实现”博文中有介绍
query.ReturnGeometry = true;
query.OutFields.Add("*");//默认输出字段为全部
query.OutSpatialReference = map1.SpatialReference;//查询结果的空间坐标系,必须设置,否则查询出错;

2.在draw_Completed事件中设置查询参数、执行查询

draw_Completed是绘制操作的结束事件,关于绘图操作可以网上教程很多,可以自己查看

selPoint = e.Geometry;//获取点击点位置
query.Geometry = e.Geometry;//查询图形

query.Where="Class='其他'";//过滤条件

task.ExecuteAsync(query);//执行查询

 

效果如下:

 

全部显示的效果

部分显示

查询整个地图范围,结果是条件显示的内容

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值