题记
ArcGIS之所以比较普及,特点之一就是它能紧跟计算机发展的趋势。推出适合各种平台的API比如JavaScript API,Java API,Flex API,Siverlight API,后二者是现在RIA的主流代表,开发工具、设计工具一应俱全,至于这些API如何取舍,其实并不重要,临渊思鱼,不如退而结网。
取这个题目,是因为当年我很喜欢lotus 1-2-3。
准备工具
假设你已经安装了Visual Studio 2010 (最新版本嘛,至少以后几年你翻我的文章还不会过期)的任何一个版本,建议安装Blend设计工具,它可以用来设计非常酷的Silverlight画面。
SL需要另外安装工程插件,Silverlight 4的Visual studio工程插件,可以在
这里下载。
最后我们需要ArcGIS SL 客户端API,你需要自己注册一个ESRI Global账户,登陆后,就可以在
这里下载。
Hello,World
安装好上面的SL4插件和ArcGIS Client,就可以创建一个Silverlight Application工程了,并添加ESRI.ArcGIS.Client(版本1.2)的引用。
ArcGIS客户端包括4个Dll:
ESRI.ArcGIS.Client.dll 是主要用到的核心类库,地图,图层,查询等相关类都在这里面.
ESRI.ArcGIS.Client.Bing.dll 是用来使用微软Bing的地图和服务。
ESRI.ArcGIS.Client.Toolkit.dll 工具类库,一些常用的工具如放大缩小就在里面。
ESRI.ArcGIS.Client.Behaviors.dll库,充分利用Silverlight 3的Behavior特性,封装一些常用的鼠标操作,降低开发难度和工作量。
一般学习程序都是从最简单的"Hello,World"开始,我们也不例外。打开工程里的MainPage.XAML:
<UserControl x:Class="GisDemo.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"
xmlns:esri="clr-namespace:ESRI.ArcGIS.Client;assembly=ESRI.ArcGIS.Client"
mc:Ignorable="d"
d:DesignHeight="300" d:DesignWidth="400">
<Grid x:Name="LayoutRoot" Background="White">
<esri:Map x:Name="mymap">
<esri:Map.Layers>
<esri:ArcGISTiledMapServiceLayer ID="layerworldmap"
Url="http://server.arcgisonline.com/ArcGIS/rest/services/ESRI_Imagery_World_2D/MapServer" />
</esri:Map.Layers>
</esri:Map>
</Grid>
</UserControl>
这里添加了一个地图控件并给应该地图添加了一个瓷砖类型的图层(ArcGISTiledMapServiceLayer),访问的是ESRI公司所提供的免费地图资源,简单的的一些说明:
usercontrol标签是页面的根元素,下面的几句引入了xml的特定命名空间,里面包括了我们的ESRI.ArcGIS.Client.
Grid标签是布局控件,可以进行灵活的页面布局,xaml中常用的布局控件还有Canvas和StackPanel;
之后是我们的主角-- Map标签(继承自xaml的Control)它相当于一个Map控件,可以在其中加入地图的图层;
这里我们添加了一个ArcGISTiledMapServiceLayer瓷砖图层,URL的内容便是ArcGIS Online的一个世界地图资源。
运行这个例子,我们就得到一个真正的"您好,世界”了:
这个地图虽然简单,但是在拖曳、放大等操作速度已经远远胜过javascript版本的google map了。
ArcGis的地图资源
ArcGis提供了许多免费和收费的地图资源,这里列了一些:
1.
World_Street_Map(比例尺1:591,657,528 到 1:4,514)
REST资源:http://server.arcgisonline.com/ArcGIS/rest/services/World_Street_Map/MapServer
2.
World Imagery (比例尺1:591,657,528 到1:1,128)
REST资源:
http://server.arcgisonline.com/ArcGIS/rest/services/World_Imagery/MapServer
3.
World Topographic Map(比例尺1:591,657,528 到 1:1,128)
REST资源:
http://server.arcgisonline.com/ArcGIS/rest/services/World_Topo_Map/MapServer
4.
World Shaded Relief (比例尺1:591,657,528 到 1:72,224)
REST资源:
http://server.arcgisonline.com/ArcGIS/rest/services/World_Shaded_Relief/MapServe
5.
World Physical Map(比例尺1:591,657,528 到 1:2,311,162)
REST资源: http://server.arcgisonline.com/ArcGIS/rest/services/World_Physical_Map/MapServer
6.
World Terrain Base (1:591,657,528 到 1:72,224)
REST资源:
http://server.arcgisonline.com/ArcGIS/rest/services/World_Terrain_Base/MapServer
7.
USA Topographic Maps(1:591,657,528 到 1:18,056)
REST资源:
http://server.arcgisonline.com/ArcGIS/rest/services/USA_Topo_Maps/MapServer
更多地图类型可以参考
ESRI官方站