arcgis api for silverlight
原文 http://blog.sina.com.cn/s/blog_4638cf7b0100wntt.html
发现了一个很好的学习工具,就是Esri的在线帮助,包括概念,例子,API介绍等等。接下来的学习基本上就是按照例子结合开发方案进行实践学习。
http://help.arcgis.com/en/webapi/silverlight/samples/start.htm
程序的构成 和asp.net结构类似,前台设计代码+后台程序代码。
Xaml+Xaml.cs
Xaml包括控件的引用、设计表格的代码、控件的设置和数据绑定代码。
Xaml则是C#程序代码。
首先学习加载图层,添加控制控件。
加载图层服务是在Xaml中添加的,放在代码最下端的是在最上端显示的。图层服务的显示可以在后台程序中控制
可以添加一些控制控件,navigation(导航控件)、scaleLine(比例尺)、mapProgressBar(进度条),直接链接map就可以,非常方便。
实际上map控件加载的是server发布的一个地图服务。
图层加载服务有三种:
TiledMap 缓存切片地图服务 适用于在服务器已经做了缓存的地图
DynamicMap 动态地图服务 适用于没做缓存的地图
Image 影像服务
它们都属于MapServer。
FeatureLayer则不是加载服务,而是加载某一个确切的图层。属于graphics layer
在Featurelayer里,加载"Renderer"可以制定矢量要素的各种形状及鼠标的形状。
<Grid.Resources>
<esri:SimpleRenderer
x:Key="SelectRenderer">
<esri:SimpleRenderer.Symbol>
//client.SimpleRenderer.Symbol
<esri:SimpleMarkerSymbol Color="#7F0F2497"
Size="20"/>
//制定点的形状
</esri:SimpleRenderer.Symbol>
</Grid.Resources>
尝试了利用FeatureDataGrid显示加载的图层属性数据。但是却显示数据总数,不显示数据,后来对照源代码好像是AutoGenerateColumns选项没选上。
显示鼠标坐在地理真实坐标,需要首先获取鼠标屏幕坐标,再利用map1.ScreenToMap获取真实坐标。
通过表格查找要素并且显示属性和高亮地图显示
关键接口:
ESRI.ArcGIS.Client.Tasks.QueryTask 用于查询
QueryTask queryTask = new QueryTask("http..."); 设置查询图层服务
queryTask.ExecuteAsync(query); 执行查询语句
queryTask.ExecuteAsync(query,"user state"); 执行查询语句并带用户状态
ESRI.ArcGIS.Client.Tasks.Query 用于设置查询条件
Query.text 设置查找文本
Query.Where 设置查找条件
Query.Outfield.AddRange or Query.Outfield.Add 设置查询输出字段
Query.OutSpatialReference 设置查询输出控件参考
Query.ReturnGeometry 设置输出要素是否包含集合体
datagrid数据绑定:
分两种:一种是横排显示,一种是竖排显示
竖排显示首先在Xaml中要首先设置列字段数据绑定
<Datagrid columns>
<sdk:datagrid.textcolumn Binding="{binding path=key}">//字段
<sdk:datagrid.textcolumn Binding="{binding path=value}">//值
在后台代码中:
dataGrid.ItemsSource = selectedFeature.Attributes;//绑定选择要素的属性
横排显示需要在Xaml中设置列字段数据绑定
<Datagrid columns>
<sdk:datagrid.textcolumn Binding="{binding attributes[]}">//绑定
在后台代码中:
Binding resultFeaturesBinding = new Binding("LastResult.Features");//绑定属性
resultFeaturesBinding.Source = queryTask;//绑定来源
dataGrid1.SetBinding(DataGrid.ItemsSourceProperty,
resultFeaturesBinding);//绑定
在地图中高亮显示:
首先在Xaml中添加图层<esri:GraphicsLayer
ID="MyGraphicsLayer" />
再在后台程序中:
GraphicsLayer selectionGraphicslayer =
map1.Layers["MySelectionGraphicsLayer"] as GraphicsLayer;
graphicsLayer.Graphics.Add(selectedFeature);//绑定要素图层标记
通过点击图层查找要素并且显示属性和高亮地图显示
定义鼠标勾画结束事件
private void MyDrawFace_DrawComplete (object sender,
ESRI.ArcGIS.Client.DrawEventArgs args)
{
QueryTask queryTask = new QueryTask("http:“);//定义查找数据源
query.Geometry = args.Geometry;//定义查找图形
queryTask.ExecuteAsync(query);执行查找
}
在地图中高亮显示多个要素:
foreach (Graphic feature in featureSet.Features)
{
graphicsLayer.Graphics.Insert(0, feature);
}
- win7的IIS配置。win7默认的IIS是7.5.
- silverlight程序发布,比较简单,在vs2010下,右键单击Web工程后点击发布即可。
- 设置IIS,首先新建网站,然后在新建网站上添加应用程序,路径设置为工程所在文件夹,应用程序池选择asp.net4.0。
- arcgis api for silverlight程序获取Server服务,在服务器的IIS目录下,必须放置这两个文件(crossdomain.xml和clientaccesspolicy.xml)?跨域访问文件
- 防火墙一定要关闭或者设置好。
- webconfig,加默认文档前要加<clear />。
arcgis api for silverlight的更多相关文章
- ArcGIS api fo silverlight学习一(silverlight加载GeoServer发布的WMS地图)
最好的学习资料ArcGIS api fo silverlight官网:http://help.arcgis.com/en/webapi/silverlight/samples/start.htm 一. ...
- ArcGIS API for Silverlight动态标绘的实现
原文:ArcGIS API for Silverlight动态标绘的实现 1.下载2个dll文件,分别是: ArcGISPlotSilverlightAPI.dll 和 Matrix.dll 其下载地 ...
- ArcGIS API for Silverlight地图加载众多点时,使用Clusterer解决重叠问题
原文:ArcGIS API for Silverlight地图加载众多点时,使用Clusterer解决重叠问题 问题:如果在地图上加载成百上千工程点时,会密密麻麻,外观不是很好看,怎么破? 解决方法: ...
- ArcGIS API for Silverlight 调用WebService出现跨域访问报错的解决方法
原文:ArcGIS API for Silverlight 调用WebService出现跨域访问报错的解决方法 群里好几个朋友都提到过这样的问题,说他们在Silverlight中调用了WebServi ...
- ArcGIS API for Silverlight 调用GP服务绘制等值面
原文:ArcGIS API for Silverlight 调用GP服务绘制等值面 GP服务模型如下图: 示例效果图片如下:
- ArcGIS API for Silverlight代码中使用Template模板
原文:ArcGIS API for Silverlight代码中使用Template模板 在项目开发中,会遇到点选中聚焦闪烁效果,但是因为在使用Symbol的时候,会设置一定的OffSetX和OffS ...
- ArcGIS API for Silverlight实现地图测距功能
原文:ArcGIS API for Silverlight实现地图测距功能 问题:如何实现地图测距功能? 地图工具栏 <Grid x:Name="gToolMenu" Hei ...
- ArcGIS API for Silverlight 加载google地图
原文:ArcGIS API for Silverlight 加载google地图 using System; using System.Net; using System.Windows; using ...
- ArcGIS API for Silverlight 绘制降雨路径动画
原文:ArcGIS API for Silverlight 绘制降雨路径动画 #region 降雨动画演示 2014-04-16 List<Graphic> graphics = new ...
- ArcGIS API for Silverlight 当DataGrid选中项时,地图聚焦弹出窗口,并可以播放音频文件
原文:ArcGIS API for Silverlight 当DataGrid选中项时,地图聚焦弹出窗口,并可以播放音频文件 先看效果图,然后上代码: <UserControl x:Class= ...
随机推荐
- PowerShell中的输出
1 输出重定向 > 或者>> 2 输出控制 out-* -paging#分页输出 get-process | out-host -paging more指令用于屏显 get-pro ...
- hdu1067-Gap(bfs+哈希)
Let's play a card game called Gap. You have 28 cards labeled with two-digit numbers. The first digit ...
- LVM(2)逻辑卷的扩展、缩减、快照卷
一.扩展逻辑卷:lvextend 扩展逻辑卷物理边界 -L [+]# /PATH/TO/LV2G, +3G5G
- Linux硬盘分区和格式化
分区与格式化 先用fdisk分区,分区完成后再用mkfs格式化并创建文件系统,挂载,磁盘就能使用啦. 分区的原理: MBR:主引导扇区 主分区表:64bytes,最多只能分四个主 ...
- redis知识
http://www.cnblogs.com/moon521/p/5301895.html 菜鸟教程:http://www.runoob.com/redis/redis-tutorial.html
- 删除list中指定值的元素
public class ListRemoveAll { public static void main(String[] args) { // TODO Auto-generated method ...
- List数据集动态排序
List<Type> datas = new List<Type>; datas = datas.OrderBy(c => c.GetType().GetProperty ...
- mysql 5.6 General error: 1364 Field mysql 严格模式导致
问题:SQLSTATE[HY000]: General error: 1364 Field 解决方法:set global sql-mode=”NO_AUTO_CREATE_USER,NO_ENGIN ...
- EffectiveC#12,13,14--成员初始化
1.在一个类里声明变量的同时,直接创建实例值.包括静态的和实例的变量 例:object m_o = new object(); 如下情况时不建议这么做:第一种 值类型. int i=new int() ...
- 自定义TypeConverter把基础类型转换为复杂类型
原文(http://tech.it168.com/d/2008-06-30/200806300953554_all.shtml) TypeConverter对于编写ASP.NET Server Con ...
转载▼