Silverlight加载第一个Map
1、Map
Map 是 ArcGIS API for Silverlight 中的核心组件,主要用于呈现地图服务、影像服务中的空间数据,此外还可以展示 WMS 服务、热点图(HeatMap)、Bing 地图、OpenStreetMap、GeoRSS、KML 数据等,并且 Map 可以与用户交互,接受用户输入。
属性:
Extent:地图外包矩形的范围,即四个角点坐标范围。
IsLogoVisible:是否显示esri的logo。
Layers:地图中的图层集合,先加入的图层在底部,最后加入的图层在最上层显示。
PanDuration/ZoomDuration:平移/缩放时动画持续时间。
SpatialReference:空间参考,通过WKID(空间参考编号)或WKT(空间参考名称)指定,默认为加入地图中的第一个具有空间参考的图层的空间参考。
WrapAround:设置地图是否经向循环,即通过平移工具,一直向左或向右移动地图,模拟球体旋转。
方法:
MapToScreen/ScreenToMap:地图与屏幕之间的坐标转换。
PanTo/ZoomTo:平移/缩放到指定范围。
事件:
ExtentChanged:地图范围改变事件。
MouseClick:地图上的单击事件。
Progress:地图数据加载进度事件。
PropertyChanged:地图属性变化事件。
2、加载地图数据
<UserControl x:Class="HelloWorld.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="http://schemas.esri.com/arcgis/client/2009" mc:Ignorable="d" d:DesignHeight="300" d:DesignWidth="400"> <Grid x:Name="LayoutRoot" Background="White"> <esri:Map x:Name="myMap"> <esri:ArcGISTiledMapServiceLayer ID="StreetMapLayer" Url="http://server.arcgisonline.com/ArcGIS/rest/services/ESRI_StreetMap_World_2D/MapServer" InitializationFailed="Layer_InitializationFailed"/> </esri:Map> </Grid> </UserControl>
添加后台代码(C#):
using System; using System.Collections.Generic; using System.Linq; using System.Net; using System.Windows; using System.Windows.Controls; using System.Windows.Documents; using System.Windows.Input; using System.Windows.Media; using System.Windows.Media.Animation; using System.Windows.Shapes; using ESRI.ArcGIS.Client; namespace HelloWorld { public partial class MainPage : UserControl { public MainPage() { InitializeComponent(); } private void Layer_InitializationFailed(object sender,EventArgs e) { //获取图层对象 Layer layer = sender as Layer; //显示图层加载失败原因的提示 MessageBox.Show("加载图层失败:" + layer.InitializationFailure.Message); } } }
3、后台代码方式
通过在后台代码(如 C#)中创建 ArcGISDynamicMapServiceLayer 并将其添加到Map 对象中,实现向地图中添加动态服务图层的功能,代码如下所示:
using System; using System.Collections.Generic; using System.Linq; using System.Net; using System.Windows; using System.Windows.Controls; using System.Windows.Documents; using System.Windows.Input; using System.Windows.Media; using System.Windows.Media.Animation; using System.Windows.Shapes; using ESRI.ArcGIS.Client; namespace HelloWorld { public partial class MainPage : UserControl { public MainPage() { InitializeComponent(); // 创建动态服务图层 ArcGISDynamicMapServiceLayer usaMapLayer = new ArcGISDynamicMapServiceLayer(); usaMapLayer.ID = "usaMap";// 指定图层ID // 指定图层URL usaMapLayer.Url = "http://sampleserver1.arcgisonline.com/ArcGIS/rest/services/Specialty/ESRI_StateCityHighway_USA/MapServer"; // 将图层添加到地图中 myMap.Layers.Add(usaMapLayer); } } }