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;
}