ArcGIS Runtime—点击查询【二】

XAML.cs代码如下:

 

//点击查询

 

privatevoid button1_Click(object sender, RoutedEventArgs e)

 

{

 

   try

 

   {

 

       bQuery = true;

 

   }

 

   catch (Exception Err)

 

   {

 

        MessageBox.Show(Err.Message);

 

   }

 

}

 

       //地图点击事件

 

privatevoid MyMap_MouseClick(objectsender, ESRI.ArcGIS.Client.Map.MouseEventArgs e)

 

       {

 

           try

 

           {

 

                if(bQuery)

 

                {

 

                    LocalArcGISDynamicMapServiceLayer pQueryMapServiceLyr = MyMap.Layers["lyr1"] asLocalArcGISDynamicMapServiceLayer;

 

                    stringsurl = pQueryMapServiceLyr.Url;

 

                    //创建查询IdentifyTask

 

                    IdentifyTask QueryIdentify = newIdentifyTask(surl);

 

                    QueryIdentify.ExecuteCompleted+= ExecuteCompleted;

 

                    QueryIdentify.Failed +=Failed;

 

                    //设置查询参数

 

                    IdentifyParameters QueryPara = newIdentifyParameters();

 

                    QueryPara.LayerOption = LayerOption.visible;

 

                    QueryPara.Tolerance = 3;

 

                    QueryPara.MapExtent =MyMap.Extent;

 

                    QueryPara.Width = (int)MyMap.ActualWidth;

 

                    QueryPara.Height = (int)MyMap.ActualHeight;

 

                    QueryPara.SpatialReference= MyMap.SpatialReference;

 

 

 

                    QueryPara.Geometry =e.MapPoint;//查询几何图形为地图点击点

 

 

 

                   QueryIdentify.ExecuteAsync(QueryPara);

 

                   

 

                }

 

 

 

           }

 

           catch (Exception Err)

 

           {

 

                MessageBox.Show(Err.Message);

 

           }

 

       }

 

       //成功查询后执行

 

       privatevoid ExecuteCompleted(object sender, IdentifyEventArgs args)

 

       

 

           if (args.IdentifyResults.Count > 0)

 

           {

 

                GraphicsLayer graphicsLayer = MyMap.Layers["ResultsGraphicsLayer"] asGraphicsLayer;

 

                graphicsLayer.ClearGraphics();

 

                //从选中要素中取出需要的信息

 

                IdentifyResult QueryResult = args.IdentifyResults[0];

 

                stringskey = QueryResult.Feature.Attributes.ElementAt(2).Key.ToString();

 

                stringsval = QueryResult.Feature.Attributes.ElementAt(2).Value.ToString();

 

                stringslayername = QueryResult.LayerName;

 

                //地图提示信息内容

 

                stringtitle = string.Format(“{0} = {1} ,skey, sval);

 

                GraphicselectedFeature = QueryResult.Feature;

 

                selectedFeature.Attributes.Add(“maptip, title);

 

                //设置显示符号风格

 

                ESRI.ArcGIS.Client.Symbols.Symbol pSym = null;

 

                if(QueryResult.Feature.Geometry is ESRI.ArcGIS.Client.Geometry.MapPoint)

 

                {

 

                    pSym =LayoutRoot.Resources["PointSym"] asESRI.ArcGIS.Client.Symbols.Symbol;

 

                }

 

                elseif (QueryResult.Feature.Geometry isESRI.ArcGIS.Client.Geometry.Polyline)

 

                {

 

                    pSym =LayoutRoot.Resources["LineSym"] asESRI.ArcGIS.Client.Symbols.Symbol;

 

                }

 

                elseif (QueryResult.Feature.Geometry isESRI.ArcGIS.Client.Geometry.Polygon)

 

                {

 

                    pSym = LayoutRoot.Resources["PolySym"] as ESRI.ArcGIS.Client.Symbols.Symbol;

 

                }

 

                selectedFeature.Symbol = pSym;

 

               graphicsLayer.Graphics.Add(selectedFeature);

 

                label1.Content = 选择目标所在图层 + slayername + ;

 

           }

 

           else

 

           {

 

                MessageBox.Show(没有检索到!);

 

           }

 

       }

 

       //查询失败后执行

 

       privatevoid Failed(object sender, TaskFailedEventArgs args)

 

       {

 

           MessageBox.Show(检索失败: + args.Error);

 

       }

 

       //地图漫游浏览

 

       privatevoid button2_Click(object sender, RoutedEventArgs e)

 

       {

 

           bQuery = false;

 

       }

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值