2、Find示例代码

(1)xaml文件:

//添加Symbol命名空间

xmlns:esriSymbols="clr-namespace:ESRI.ArcGIS.Client.Symbols;assembly=ESRI.ArcGIS.Client

//创建Symbol

<Grid.Resources>

<esriSymbols:SimpleFillSymbol x:Name="ResultsFillSymbol" Fill="#64FF0000" BorderBrush="Red" BorderThickness="2" />

</Grid.Resources>

//创建GraphicsLayer,显示查询结果

<esri:GraphicsLayer ID="MyGraphicsLayer">

<esri:GraphicsLayer.MapTip>

<Grid Background="LightYellow">

<StackPanel Margin="5">

<StackPanel Orientation="Horizontal">

<TextBlock Text="{Binding [NAME]}" FontWeight="Bold" />

<TextBlock Text=" County, " FontWeight="Bold" />

<TextBlock Text="{Binding [STATE_NAME]}" FontWeight="Bold" />

</StackPanel>

<StackPanel Orientation="Horizontal">

<TextBlock Text="Population (2007): " />

<TextBlock Text="{Binding [POP2007]}" />

</StackPanel>

</StackPanel>

<Border BorderBrush="Black" BorderThickness="1" />

</Grid>

</esri:GraphicsLayer.MapTip>

</esri:GraphicsLayer>

//Find对话框

<Canvas HorizontalAlignment="" VerticalAlignment="" Margin="0,15,7,0" Width="230" >

<Rectangle Fill="#CC5C90B2" Stroke="Gray"  RadiusX="10" RadiusY="10" Width="210" Height="55" />

<TextBlock Text="Find的国家名:" Foreground="White" FontSize="10" Margin="10,5,0,0" />

<TextBox x:Name="FindTextBox" Width="150" Margin="15,22,0,0" Text="Wash" />

<Button x:Name="FindButton" Content="Find" Margin="168,23,0,0" Click="FindButton_Click" />

</Canvas>

(2)cs文件

//添加命名空间

using ESRI.ArcGIS.Client;

using ESRI.ArcGIS.Client.Tasks;

// 点击find按钮,执行Find

private void FindButton_Click(object sender, RoutedEventArgs e)

{

//初始化Find task

FindTask findTask = new FindTask("http://./ArcGIS/rest/services/./MapServer/");

findTask.ExecuteCompleted += FindTask_ExecuteCompleted;

findTask.Failed += FindTask_Failed;

//初始化Find参数:将countries图层的Name字段作为Find Field

FindParameters findParameters = new FindParameters();

findParameters.LayerIds.AddRange(new int[] { 3 });

findParameters.SearchFields.AddRange(new string[] { "NAME" });

//返回find结果的feature geometry

findParameters.ReturnGeometry = true;

//textbox的text作为查询关键字

findParameters.SearchText = FindTextBox.Text;

//执行查询

findTask.ExecuteAsync(findParameters);

}

//find结束后,将结果绘制在地图上

private void FindTask_ExecuteCompleted(object sender, FindEventArgs args)

{

//获取graphicsLayer,清除先前的查询结果

GraphicsLayer graphicsLayer = MyMap.Layers["MyGraphicsLayer"] as GraphicsLayer;

graphicsLayer.ClearGraphics();

// Check for new results

if (args.FindResults.Count > 0)

{

//将结果添加进地图

foreach (FindResult result in args.FindResults)

{

result.Feature.Symbol = ResultsFillSymbol;

graphicsLayer.Graphics.Add(result.Feature);

}

}

else

{

MessageBox.Show("No features found");

}

}

//find失败时,显示失败原因

private void FindTask_Failed(object sender, TaskFailedEventArgs args)

{

MessageBox.Show("Find failed: " + args.Error);

}

3、Identify示例代码

(1)xaml文件:

//添加命名空间

xmlns:esriTasks="clr-namespace:ESRI.ArcGIS.Client.Tasks;assembly=ESRI.ArcGIS.Client"    xmlns:esriSymbols="clr-namespace:ESRI.ArcGIS.Client.Symbols;assembly=ESRI.ArcGIS.Client    xmlns:slData="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Data"

//定义task resources

<Grid.Resources>

<esriSymbols:PictureMarkerSymbol x:Name="IdentifyLocationSymbol" OffsetX="35" OffsetY="35" Source="/Assets/images/i_about.png" />

<esriSymbols:SimpleFillSymbol x:Name="SelectedFeatureSymbol" Fill="#64FF0000" BorderBrush="Red" BorderThickness="2" />

</Grid.Resources>

//创建GraphicsLayer,容纳Identify的地图结果显示

<esri:GraphicsLayer ID="ResultsGraphicsLayer" />

<esri:GraphicsLayer ID="IdentifyIconGraphicsLayer" />

//Identify的属性结果显示界面

<StackPanel Margin="10" HorizontalAlignment="Left">

<Grid>

<Rectangle Fill="#CC5C90B2" Stroke="Gray"  RadiusX="10" RadiusY="10" />

<TextBlock Text="点击地图identify feature" Foreground="White" FontSize="10"                     Margin="10,5,10,5" />

<StackPanel x:Name="IdentifyResultsStackPanel" Margin="15,30,15,10" Visibility="Collapsed">

<TextBlock Text="Select a result from the list to display it" Foreground="White"                         FontSize="10" Margin="0,0,0,5" />

<ComboBox x:Name="IdentifyComboBox" SelectionChanged="IdentifyComboBox_SelectionChanged" />

<ScrollViewer MaxHeight="340" Margin="0,10,0,0">

<slData:DataGrid x:Name="IdentifyDetailsDataGrid" AutoGenerateColumns="False" HeadersVisibility="None" >

<slData:DataGrid.Columns>

<slData:DataGridTextColumn Binding="{Binding Path=Key}" FontWeight="Bold"/>

<slData:DataGridTextColumn Binding="{Binding Path=Value}"/>

</slData:DataGrid.Columns>

</slData:DataGrid>

</ScrollViewer>

</StackPanel>

</Grid>

</StackPanel>

(2)cs文件

//添加命名空间

using ESRI.ArcGIS.Client.Tasks;

using ESRI.ArcGIS.Client.Symbols;

// IdentifyResult

private List<IdentifyResult> _lastIdentifyResult;

public MainPage() { InitializeComponent(); }

// 点击地图,执行Identify

private void MyMap_MouseClick(object sender, ESRI.ArcGIS.Client.Map.MouseEventArgs args)

{

//在identify的地方(鼠标点击附近)显示一个icon

GraphicsLayer graphicsLayer = MyMap.Layers["IdentifyIconGraphicsLayer"] as GraphicsLayer;

graphicsLayer.ClearGraphics();

ESRI.ArcGIS.Client.Graphic graphic = new ESRI.ArcGIS.Client.Graphic()

{

Geometry = args.MapPoint,

Symbol = IdentifyLocationSymbol

};

graphicsLayer.Graphics.Add(graphic);

// 初始化Identify task

IdentifyTask identifyTask = new IdentifyTask("http://./ArcGIS/rest/services/./MapServer");

identifyTask.ExecuteCompleted += IdentifyTask_ExecuteCompleted;

identifyTask.Failed += IdentifyTask_Failed;

//初始化Identify parameters,指定searching的layers

IdentifyParameters identifyParameters = new IdentifyParameters();

identifyParameters.LayerOption = LayerOption.all;

// 设置identify parameters:通过地图的现有属性

identifyParameters.MapExtent = MyMap.Extent;

identifyParameters.Width = (int)MyMap.ActualWidth;

identifyParameters.Height = (int)MyMap.ActualHeight;

//通过点击执行Identify features

identifyParameters.Geometry = args.MapPoint;

identifyTask.ExecuteAsync(identifyParameters);

}

//identify完成后,查询结果的Attribute显示窗口

private void IdentifyTask_ExecuteCompleted(object sender, IdentifyEventArgs args)

{

//清除旧的结果

IdentifyComboBox.Items.Clear();

// Check for new results

if (args.IdentifyResults.Count > 0)

{

IdentifyResultsStackPanel.Visibility = Visibility.Visible;

//将结果添加到ComboBox

foreach (IdentifyResult result in args.IdentifyResults)

{

string title = string.Format("{0} ({1})", result.Value.ToString(), result.LayerName);

IdentifyComboBox.Items.Add(title);

}

// Workaround for ComboBox bug

IdentifyComboBox.UpdateLayout();

// Store the list of identify results

_lastIdentifyResult = args.IdentifyResults;

// Initialize ComboBox and fire SelectionChanged

IdentifyComboBox.SelectedIndex = 0;

}

else

{

// Hide ComboBox and attributes DataGrid and notify user

IdentifyResultsStackPanel.Visibility = Visibility.Collapsed;

MessageBox.Show("No features found");

}

}

//多个结果时,点击下拉框更改其它结果

void IdentifyComboBox_SelectionChanged(object sender, SelectionChangedEventArgs e)

{

//地图上清除先前的结果

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

graphicsLayer.ClearGraphics();

// Check that ComboBox has a selected item.  Needed because SelectionChanged fires

// when ComboBox.Clear is called.

if (IdentifyComboBox.SelectedIndex > -1)

{

// Update DataGrid with selected feature's attributes

Graphic selectedFeature = _lastIdentifyResult[IdentifyComboBox.SelectedIndex].Feature;

IdentifyDetailsDataGrid.ItemsSource = selectedFeature.Attributes;

// Apply symbol and add selected feature to map

selectedFeature.Symbol = SelectedFeatureSymbol;

graphicsLayer.Graphics.Add(selectedFeature);

}

}

//identify失败时,显示失败原因

private void IdentifyTask_Failed(object sender, TaskFailedEventArgs args)

{

MessageBox.Show("Identify failed: " + args.Error);

}

4、Adress locator示例代码(暂未学)

5、Geometry示例代码(暂未学)

6、Geoprocessing示例代码(暂未学)

7、Route示例代码(暂未学)

【转】ArcGIS API for Silverlight/WPF 2.1学习笔记(五)的更多相关文章

  1. ArcGIS API for Silverlight/WPF 2.1学习笔记(一)——精简版

    一.安装 1.Visual Studio: (1)Visual Studio 2010或Visual Web Developer Express 2010 (2)Silverlight 4 Tools ...

  2. 【转】ArcGIS API for Silverlight/WPF 2.1学习笔记(一)

    源自:http://blog.163.com/zwx_gis/blog/static/32434435201122193611576/ (主页:http://blog.163.com/zwx_gis/ ...

  3. 【转】ArcGIS API for Silverlight/WPF 2.1学习笔记(四)

      七.Editing ArcGIS Server 10提供了: 通过feature service,在Web上编辑Feature layers的geographic data的功能. 通过geome ...

  4. 【转】ArcGIS API for Silverlight/WPF 2.1学习笔记(二)

      五.Graphics layer 1.新增Graphics layer Graphics layer用于显示用户自定义绘制的点.线.面图形.使用时确保xaml文件中Graphics layer定义 ...

  5. 【转】ArcGIS API for Silverlight/WPF 2.1学习笔记(三)

    六.Feature Layer Feature Layer是一种特殊的Graphics layer(继承自Graphics layer),除了像Graphics layer一样包含和显示Graphic ...

  6. 扩展ArcGIS API for Silverlight/WPF 中的TextSymbol支持角度标注

    原文 http://blog.csdn.net/esricd/article/details/7587136 在ArcGIS API for Silverlight/WPF中原版的TextSymbol ...

  7. ArcGIS API for Silverlight学习笔记

    ArcGIS API for Silverlight学习笔记(一):为什么要用Silverlight API(转) 你用上3G手机了吗?你可能会说,我就是喜欢用nokia1100,ABCDEFG跟我都 ...

  8. ArcGIS API for Silverlight开发入门

    你用上3G手机了吗?你可能会说,我就是喜欢用nokia1100,ABCDEFG跟我 都没关系.但你不能否认3G是一种趋势,最终我们每个人都会被包裹在3G网络中.1100也不是一成不变,没准哪天为了打击 ...

  9. ArcGIS API For Silverlight使用在线地图的多种方法总结

    引自:http://www.cnblogs.com/meimao5211/p/3283969.html ArcGIS API For Silverlight使用在线地图的多种方法总结 本人也正在学习A ...

随机推荐

  1. 公司里面用的iTextSharp(教程)---简介

    一.需求: 公司这次要做一个生成PDF的功能,需要设计,刚刚进入公司,组长把任务分配给了我,为了完成这个任务,苦学了许久的iTextSharp.现在记录下实现过程中了了解的一些东东,一起分享哈~~ 二 ...

  2. MyBatis学习笔记(八)——Mybatis3.x与Spring4.x整合

    转自孤傲苍狼的博客:http://www.cnblogs.com/xdp-gacl/p/4271627.html 一.搭建开发环境 1.1.使用Maven创建Web项目 执行如下命令: mvn arc ...

  3. linux常用命令:less 命令

    less 工具也是对文件或其它输出进行分页显示的工具,应该说是linux正统查看文件内容的工具,功能极其强大.less 的用法比起 more 更加的有弹性.在 more 的时候,我们并没有办法向前面翻 ...

  4. python3.4学习笔记(三) idle 清屏扩展插件

    python3.4学习笔记(三) idle 清屏扩展插件python idle 清屏问题的解决,使用python idle都会遇到一个常见而又懊恼的问题——要怎么清屏?在stackoverflow看到 ...

  5. CSS3实现8种Loading效果【二】

    CSS3实现8种Loading效果[二]   今晚吃完饭回宿舍又捣鼓了另外几种Loading效果,老规矩,直接“上菜“…… 注:gif图片动画有些卡顿,非实际效果! 第一种效果: 代码如下: < ...

  6. ACM题目————困难的串

    题目描述 如果一个字符串包含两个相邻的重复子串,则称他是“容易的串”,其他串称为"困难的串".例如,BB,ABCDACABCAB,ABCDABCD都是容易的串,而D,DC,ABDA ...

  7. 从JavaWeb的角度认识Nginx

    作为一名JavaWeb方向程序员,更多的是写服务器后台代码,但是俗话说,不想当架构师的程序员不是好程序员,我们要对并发.负载等词汇进行深入探索. 一.重新认识Tomcat Tomcat属于轻量级的We ...

  8. js常量

    原文链接:https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Statements/const const 声明创建一个 ...

  9. 20145205武钰《网络对抗》web安全基础实践

    实验后问题回答 (1)SQL注入攻击原理,如何防御 攻击原理:SQL注入攻击就是通过把SQL命令插入到Web表单递交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意SQL命令的目的 防御手 ...

  10. win7 + MySQL 5.6.35 免安装版部署

    之前项目开发一直用的asp.net技术,所以数据库自然而然的就用的Sql Server了,最近想着手看一下MySQL数据库,部署免安装版的MySQL的过程记录一下. 准备工作:window 7   6 ...