ArcGIS API for Silverlight学习笔记

ArcGIS API for Silverlight学习笔记(一):为何要用Silverlight API(转)

你用上3G手机了吗?你可能会说,我就是喜欢用nokia1100,ABCDEFG跟我都不要紧。但你不可否认3G是一种趋势,最终咱们每一个人都会 被包裹在3G网络中。1100也不是一成不变,没准哪天为了打击犯罪,会在你的1100上强制装上GPS。GIS工做既然创建在计算机的基础上,固然也得 随着IT行业与时俱进。
       看看如今计算机应用的趋势吧。云(计算),这个东西可讲不清楚,由于云嘛,飘忽不定的。不过能够这样来看它,之后计算机网络上就有一坨(或者几坨)万能的 云,有什么需求云均可以知足咱们,包括各类资源或者计算工做,就不须要在本身的机器上安装任何软件了(甚至操做系统均可以由天边那朵云来提供给你)。更具 体点,SaaS(Software as a Service),各类的网页邮件系统,google docs(一 个在线的office)都是SaaS。收发邮件登录一个网页就行,而不须要在本身机器上安装一个软件。这就是计算机应用的一个趋势,把全部东西都作到网 上。再来看看网上的趋势:RIA(Rich InternetApplication)。RIA简单来说就是一个网页(网络应用),在完成基本功能的同时,会让你以为很漂亮,操做起来很舒服,效果很 炫,而不是打开后马上就想关掉它。其实大受欢迎的开心网(各类插件)和twitter,甚至QQ空间等,都有RIA的身影。
       好了,ArcGIS之因此在行业领先,特色之一就是它能紧跟计算机发展的趋势。ArcGIS Online就是那朵天边的浮云;JavaScript API,Flex API,Siverlight API就是ArcGIS本身RIA的三驾马车。
       这里还得插一句,我以为ArcGIS Server的主角原本是ADF,经过它咱们能够完成一个无所不能的ServerGIS。但在大多数状况下,GIS都是做为特定的业务嵌入在一些MIS中 的,相比购买ADF这辆悍马来讲,仍是直接驾驭三套车跑的更轻快一些。
       如今看看咱们的主角。实际上是ArcGIS API forSilverlight/WPF(如下专一Siverlight部分),那么Silverlight和WPF的关系如何呢?Silverlight 原来叫WPF/E,E就是Everywhere,从命名能够看出它们的关系:Silverlight是WPF的一个子集。WPF 是.NETFramework 3.0的组成部分之一,微软视其为下一代用户界面,总之很高档就是了(在Vista和Windows7中看到的大量与XP不一样的界面,就是WPF的身 影);Silverlight能够看作是WPF在浏览器里的一个外挂,用于向网络用户展现本身的强大能力,因为受限于网络环境,因此是WPF的一部分核心 功能。Siverlight的设计初衷是跨平台,跨浏览器的。
       若是这些仍是比较抽象,那么能够造一个排比句来进一步说明。以前先确定一点,Flash如今在网络中的的主导地位。开始造句。Adobe有Flash,微 软有Silverlight;Adobe有AIR,微软有WPF;Flex有mxml,Silverlight有xaml;Adobe有 ActionScript,微软有Code-Behind(C#/VB.NET)或者JavaScript;Adobe有CS(包括 Dreamweaver,Flash,Fireworks,Photoshop,Illustrator),微软有ExpressionStudio(包 括Blend,Web,Design,Media,Encoder)。如今,可以看来Siverlight究竟是何方神圣了吧?
       最后再来讲说ArcGIS这三驾马车(JavaScript API,Flex API,SiverlightAPI)。国外有人说,随着Siverlight API的推出,与Flex API一块儿,将会使JavaScriptAPI慢慢退出历史舞台,由于前二者就是为RIA而生的。但其实也否则,随着Google和Mozilla工程师 的推动,他们可以使JavaScript的执行速度提升很是多,Chrome就是例子。在这种背景下,一些很是cool的程序员会让古老的JavaScript得到重生。到底哪匹马跑得更快?别回答这种问题,赶忙挑一匹本身的马儿,快马扬鞭吧~~
       在今年的ESRI开发用户大会上,一阵鼓声事后,ESRI隆重推出了ArcGIS API for Silverlight/WPF(beta)。接下来我将把本身在学习Silverlight API中的一些经历和你们分享,与大伙共同进步。php

转自温景良html

连接程序员

原做者:diligentpigweb

原文地址:http://bbs.esrichina-bj.cn/ESRI/thread-43923-1-1.htmlexpress

 

ArcGIS API for Silverlight学习笔记(二):ArcGIS API for Silverlight环境搭建

            我这里不讲解Silverlight开发环境的搭建(我用的是VS2010,Silverlight4,Blend4做为开发环境 的),Silverlight API的开发不须要在本身的机器上安装ArcGIS Server,可直接使用ArcGIS Online上的数据;但若是要添加本身的数据,固然仍是须要ArcGIS Server了。api

(一)下载安装ArcGIS API for Microsoft Silverlight/WPF ,浏览器

进入以下页面http://resources.esri.com/arcgisserver/apis/silverlight网络

(1)须要注册一个ESRI Gloab 帐户。
(2)注册帐户后,进入下载页面,就能够下载ArcGIS API for Microsoft Silverlight/WPFpost

下载完成后点击安装学习

 

安装完成后会在C:\Program Files\ESRI SDKs\Silverlight\v1.2下出现几个dll,若是是WPF会在C:\Program Files\ESRI SDKs\WPF\v1.2中出现几个相同的dll.我这里主要讲解silverlight部分。

(1)ESRI.ArcGIS.Client.dll  

 核心类库,包括地图,ArcGIS Service Layer(图层),图形,几何、符号组件也包含工做流任务支持查询,查找,识别,地理空间信息(geospatial),地理科学数据(geoprocessing)处理操做
(2)ESRI.ArcGIS.Client.Behaviors.dll
包含一系列的行为和动做能让元素和地图及地图的内容交互
(3)ESRI.ArcGIS.Client.Bing.dll
支持Bing图层和服务
(4)ESRI.ArcGIS.Client.Toolkit.dll
包含一系列的普通控件和导航,和地图的交互。例如Toolbar,Navigation控件,MapTips控件,在CodePlex开源控件地址http://esrisilverlight.codeplex.com

 参考http://help.arcgis.com/en/webapi/silverlight/1.2/help/index.html

(二)安装ArcGIS Server

 

ArcGIS API for Silverlight学习笔记(三):让地图Show出来

(1)新建一个Silverlight项目ArcGisSilerlight项目

(2)在Client段项目中添加ESRI.ArcGIS.Client.dll  

(3)在MainPage.xmal文件中添加以下的代码

Map是控件,而ArcGISTiledMapServiceLayer是一个地图的瓦片图层,ID是本身区的一个名字,Url是地图服务,这里是ArcGIS的在线服务,你也发布本身的瓦片图层

复制代码
<UserControl x:Class="ArcGisSilverlight.MainPage"
xmlns
="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x
="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d
="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc
="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable
="d"
xmlns:esri
="clr-namespace:ESRI.ArcGIS.Client;assembly=ESRI.ArcGIS.Client"
d:DesignHeight
="300" d:DesignWidth="400">


<Grid x:Name="LayoutRoot">
<esri:Map x:Name="MyMap">
<esri:ArcGISTiledMapServiceLayer ID="StreetMapLayer" Url="http://server.arcgisonline.com/ArcGIS/rest/services/ESRI_StreetMap_World_2D/MapServer"/>
</esri:Map>
</Grid>
</UserControl>
复制代码

就这样地图就显示出来了

源代码下载

 

ArcGIS API for Silverlight学习笔记(四):Map.Extent标签指定地图图层初始化

     继续上一节,咱们有时候要程序运行后,就显示特定区域的地图,这时咱们须要要 ArcGIS API for Silverlight中的Map控件的Extent标签,下面以地图加载时显示中国地图为例

复制代码
<UserControl x:Class="ArcGisSilverlight.MainPage"
xmlns
="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x
="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d
="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc
="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable
="d"
xmlns:esri
="clr-namespace:ESRI.ArcGIS.Client;assembly=ESRI.ArcGIS.Client"
xmlns:esriGeometry
="clr-namespace:ESRI.ArcGIS.Client.Geometry;assembly=ESRI.ArcGIS.Client"
d:DesignHeight
="300" d:DesignWidth="400">

<!--Extent标签
用来初始地图的范围,经过设置4格数值指定min x,min y,max x,max y
至关于于BingMap for Silverlight中的2个Location点Location(60,60) 和另外一点Location(13,140)来初始化地图为中国地图
-->
<Grid x:Name="LayoutRoot">
<esri:Map x:Name="MyMap" Extent="60,60,140,13">
<esri:ArcGISTiledMapServiceLayer ID="StreetMapLayer" Url="http://server.arcgisonline.com/ArcGIS/rest/services/ESRI_StreetMap_World_2D/MapServer"/>
<!--<esri:Map.Extent>
<esriGeometry:Envelope XMin="661140" YMin="-1420246" XMax="3015668" YMax="1594451" >
<esriGeometry:Envelope.SpatialReference>
<esriGeometry:SpatialReference WKID="26777"/>
</esriGeometry:Envelope.SpatialReference>
</esriGeometry:Envelope>
</esri:Map.Extent>
-->
</esri:Map>
</Grid>
</UserControl>
复制代码