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);

        }

    }
}