一、安装

1、Visual Studio:

(1)Visual Studio 2010或Visual Web Developer Express 2010

(2)Silverlight 4 Tools for Visual Studio (add-on) :仅Silverlight 4支持

(3)Expression Blend 4 SDK for Silverlight (also included with Expression Blend 4)

(Necessary for behavior and Silverlight support)

2、Expression Blend:

(1)Expression Blend 4:Included with Expression Studio editions

3、其它附加(非必须安装)

(1)Deep Zoom Composer

(2)Silverlight Toolkit

二、开始

1、VS2010,新建“Silverlight应用程序”

2、勾选“在新网站中承载Silverlight应用程序”(ASP.NET Web应用程序项目)

3、添加引用:.NET\ESRI.ArcGIS.Client

4、xaml文件中:添加命名空间指向ArcGIS Silverlight/WPF;添加Map控件,并指定其MapServiceLayer。

<UserControl x:Class="SilverlightApplication.MainPage" xmlns="…" …

xmlns:esri="http://schemas.esri.com/arcgis/client/2009">

<Grid x:Name="LayoutRoot">

<esri:Map x:Name="MyMap" >

<esri:ArcGISTiledMapServiceLayer ID="StreetMapLayer"

Url="http://hostName/ArcGIS/rest/services/mapservName/MapServer"/>

</esri:Map>

</Grid>

</UserControl>

注意:为了能跨域访问(MapServer在不同域),需要将clientaccesspolicy.xml或 crossdomain.xml文件拷贝到网站根目录(如IIS的C:\inetpub\wwwroot\)。

三、ArcGIS API for Microsoft Silverlight/WPF 2.1的ODM:

1、OMD(Object model diagrams对象模型图表)总览:参见附件一

2、OMD(Object model diagrams对象模型图表)详表:参见附件二

四、地图和图层(Maps and Layers

1、创建地图(map)

exent属性:地图的左下角和右上角坐标值,即地图的显示范围

默认:所有地图图层的范围

spatial reference(空间参考)属性:如果空间参考不一致,地图将不显示

默认:采用第一个图层的空间参考值

<esri:Map x:Name="MyMap">

<esri:Map.Extent>

<esriGeometry:Envelope XMin="." YMin="." XMax="." YMax="." >

<esriGeometry:Envelope.SpatialReference>

<esriGeometry:SpatialReference WKID="26777"/>

</esriGeometry:Envelope.SpatialReference>

</esriGeometry:Envelope>

</esri:Map.Extent>

</esri:Map>

也可后台指定:

ESRI.ArcGIS.Client.Geometry.Envelope initialExtent = new ESRI.ArcGIS.Client.Geometry.

Envelope(ESRI.ArcGIS.Client.Bing.Transform.GeographicToWebMercator( new ESRI.

ArcGIS.Client.Geometry.MapPoint(-130, 20)),ESRI.ArcGIS.Client.Bing.Transform.

GeographicToWebMercator(new ESRI.ArcGIS.Client.Geometry.MapPoint(-65, 55)));

initialExtent.SpatialReference = new ESRI.ArcGIS.Client.Geometry.SpatialReference(102100);

MyMap.Extent = initialExtent;

注:WKID-Well Know ID:EPSG发布的代表特定椭球体、单位、地理坐标系或投影坐标系的ID,例如 "EPSG:4326" 指的就是WGS 84地理坐标系,其中WKID=4326

2、新增图层(layer)

第一加载图层的空间参考决定了整个地图的空间参考

先加载的图层在地图下边,如下图:

Map Service Layers

两种类型:

tiled Service:瓦片,地图服务器上预先定义好的Image

Dyanmic Service:动态,动态生成的Image

Service host

Map Service Layer Type

描述

ArcGIS Service

ArcGISTiledMapServiceLayer

地图服务器的缓存地图服务已经存在所有地图image瓦片

ArcGISDynamicMapServiceLayer

地图服务器的无缓存地图服务动态生成地图images,可动态访问矢量(vector)和(栅格)raster数据

ArcGISImageServiceLayer

地图服务器的image服务动态生成地图images,可动态访问栅格数据

Bing Maps

TileLayer

Feature layers

包含features,如geometry(几何学)和attribute(属性)

不支持多图层缓存

ArcGISDynamicMapServiceLayer的背景颜色通常为透明

opacity属性用于定义图层的透明度(0-1)

地图不显示的原因有:

url不正确;

Map Service不可用

Map Service网站或主机没有跨域认证文件(clientaccesspolicy.xml或 crossdomain.xml)

Map Service要求token或credentials

3、导航地图(Navigation)

(1)map的ZoomDuration属性和PanDuration 属性:用于指定缩放和平移动作的持续时间。

如<esri:Map ZoomDuration="00:00:00" PanDuration ="00:00:00” …>

(2)map的SnapToLevels属性:用于指定level of detail(LOD),地图在该级别是否显示。

如<esri:Map SnapToLevels=”ture” …>

(3)map的ZoomFactor属性:键盘+/-进行缩放时,缩放的级数

(4)系统已封装的键盘和鼠标导航地图快捷键:

键盘

鼠标

结果

上、下、左、右

地图平移

拖动

地图平移

+、-

地图缩放,缩放比例为map的ZoomFactor属性指定的值

双击

地图放大,放大比例为map的ZoomFactor属性指定的值

Shift

拉框

拉框放大

Shift+Ctrl

拉框

拉框缩小

滚轮

地图缩放

(5)系统已封装的导航地图的方式和接口:

map的属性|方法

描述

Extent属性

map.Extent=envelope

Zoom()

map.Zoom(n) ,n为缩放比率,n>1为zoomin,n<1为zoomout

Zoomto()

map.Zoomto(envelope)

ZoomToResolution()

map.ZoomToResolution(lod.Resolution);

Resolution指每pixel包含的map unit数,如

Lod lod=tiledMapServiceLayer.TileInfo.Lods[5];

map.ZoomToResolution(lod.Resolution);

Panto()

Panto(point),point为地图窗口的中心点

4、Time-aware layers(此知识点不懂,有待继续研究)

ArcGIS10开始支持Time-aware layers,存储了随时间变化的信息,可用于:

(1)飓风路径及其它气象学事件;

(2)人口和土地利用的历史变化;

(3)监测生产现状的变化;

(4)火灾或洪水的行进;

(5)疾病的蔓延。

Time-aware layers的使用:

(1)使用Tookit里的TimeSlider控件

(2)使用API自己建立应用程序

Time-aware layers的建立:

在ArcMap中,右键图层\属性\Time,勾选Enable time on this layer

地图发布后,可以使用time-aware map或feature Service(ArcGISDynamicMapServiceLayer 或FeatureLayer classes)来随时间变化的查询和展示。

对于Image Services,栅格地图必须提供Mosaic Dateset,如下图:

访问TimeExtent类:通过time-aware layers的TimeExtent属性访问

TimeExtent timeExtent = (MyMap.Layers["MyFeatureLayer"] as FeatureLayer)

.TimeExtent;

//TimeExtent timeExtent = new ESRI.ArcGIS.Client.TimeExtent();

timeExtent.Start = DateTime.Parse("2002-01-01T17:33:46.0000000",

CultureInfo.CurrentCulture, DateTimeStyles.AdjustToUniversal);

5、Behaviors和actions

BehaviorAPI位于Esri.ArcGIS.Client.Behaviors集(内藏在Expression Blend4中),用于定义用户与地图的交互。使用时必须添加System.Windows.Interactivity集。

xaml文件中必须添加命名空间如下:

xmlns:esriBehaviors="clr-namespace:ESRI.ArcGIS.Client.Behaviors;assembly=ESRI.ArcGIS.Client.Behaviors"    xmlns:i="clr-namespace:System.Windows.Interactivity;assembly=System.Windows.Interactivity"

BehaviorAPI包括三个核心类:

(1)Behavior:由trigger(地图上的事件)和action(产生结果)组成

(2)Action:由trigger(地图上的事件)和目标结果

ArcGIS API for Silverlight/WPF 2.1学习笔记(一)——精简版的更多相关文章

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

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

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

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

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

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

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

    2.Find示例代码 (1)xaml文件: //添加Symbol命名空间 xmlns:esriSymbols="clr-namespace:ESRI.ArcGIS.Client.Symbol ...

  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. Django学习笔记(精简版)

    dos:安装:python setup.py install 环境变量:D:\Python27;D:\Python27\Lib\site-packages\django\bin; 转到创建的目录:dj ...

  8. ArcGIS API for Silverlight学习笔记

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

  9. ArcGIS API for Silverlight开发入门

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

随机推荐

  1. zw版【转发·台湾nvp系列Delphi例程】HALCON SetComprise1

    zw版[转发·台湾nvp系列Delphi例程]HALCON SetComprise1 procedure TForm1.Button1Click(Sender: TObject);var image0 ...

  2. ac1008

    这题说的是 给了n个点在圆 上 然后 i连 i+2 从i+2 开始连 i+4  然后 这样一直到某个点 已经被连过为止   如果还有的没有被连过 就从那个点开始 连 按照上面的规则 当 N大于6 的时 ...

  3. Python: 合并多个字典

    现在有多个字典或者映射,想将它们从逻辑上合并为一个单一的映射后执行某些操作,比如查找值或者检查某些键是否存在. eg1: a = {'x': 1, 'z': 3 }b = {'y': 2, 'z': ...

  4. input文本框只能输入数字

    HTML中的input文本框有时候需要数字的做输入检查,如果能做输入之前限定只能输入数字的话,就可以省去在提交时候的输入内容检查了. 下面是自己在火狐浏览器上调试出的实现,实现原理就是在键盘事件(on ...

  5. linux常用命令:Linux 目录结构

    对于每一个Linux学习者来说,了解Linux文件系统的目录结构,是学好Linux的至关重要的一步.,深入了解linux文件目录结构的标准和每个目录的详细功能,对于我们用好linux系统只管重要,下面 ...

  6. C/C++之面向对象

    面向对象的三个基本特征(讲解) 面向对象的三个基本特征是:封装.继承.多态. 封装 封装最好理解了.封装是面向对象的特征之一,是对象和类概念的主要特性. 封装,也就是把客观事物封装成抽象的类,并且类可 ...

  7. 随意给一组数,找出满足一下条件的a[i],a[i]左边的数小于等于a[i],a[i]右边的数大于等于a[i]

    使用一个额外数组记录每个数后面的最小值是多少,一个额外数组记录一个数前面的最大值是多少,当然,为了减少空间复杂度,可以使用一个数字记录一个数字前面最大值是多少.算法如下: public List< ...

  8. 【手把手教你树莓派3 (二)】 启动wifi模块

    概述 树莓派3内置了wifi和蓝牙模块,我们不用像以前的版本那样,再去购买一个外接的模块练到raspberry上. 当我们第一次启动了树莓派的时候,必然使用了网线,但是之后的每一次使用,我们当然更希望 ...

  9. python集合set{ }、集合函数及集合的交、差、并

    通过大括号括起来,用逗号分隔元素,特点 1.由不同元素组成,如果定义时存在相同元素,处理时会自动去重 2.无序 3.元素只能是不可变类型,即数字.字符串.布尔和元组,但集合本身可变 4.可直接定义集合 ...

  10. [Linux 003]——用户和用户组以及 Linux 权限管理(一)

    嗬!没想到吧!学习 Linux 的第三天,我们已经开始接触用户管理,用户组管理,以及权限管理这几个逼格满满的关键字.这几个关键字对于前端程序猿的我来说真的是很高大上有木有,以前尝试学 Linux 的时 ...