点查询点二

来源:互联网 发布:淘宝代购蔻驰包真假 编辑:程序博客网 时间:2024/04/26 03:20

在“点查询点”一文中,提到了点无法查询点,只能将查询点转化为面这样间接通过点查询点,这种方式是利用QueryTask对象,对DynamicLayer和FeatureLayer图层数据都有效果,但是它需要根据不同的比例尺级别调整查询精度,事实上如果查询的图层是FeatureLayer,那么这种交互查询的方式有更简单的方式,可以以通过FeatureLayer_MouseLeftButtonDown(object sender, GraphicMouseButtonEventArgs e)参数e.Graphics获取地图上鼠标所在的位置的要素,我觉得,因为要素已经加载到了内存中,所以可能查询速度更快,具体如下:

1、注册事件

 <esri:FeatureLayer ID="People" DisableClientCaching="True" AutoSave="False" Url="http://localhost/arcgis/rest/services/Map/FeatureServer/0" OutFields="*" Mode="OnDemand" Initialized="FeatureLayer_Initialized" MouseLeftButtonDown="FeatureLayer_MouseLeftButtonDown" />

2、通过事件参数获取查询要素

 IDictionary<string, object> info = new Dictionary<string, object>();

 

private void FeatureLayer_MouseLeftButtonDown(object sender, GraphicMouseButtonEventArgs e)
{
  e.Handled = true; //使地图控件默认的漫游事件失效
  Graphic  g = e.Graphic;//获取要素对象,该对象要素不要可供查询,还可被编辑,删除
  g.Selected = true;//使要素处于选中状态

    info.add("Name",g.Attributtes["Name"]);//获取属性

}