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

        }

    }
}
时间: 2024-10-08 10:14:18

Silverlight加载第一个Map的相关文章

解决ArcGIS API for Silverlight 加载地图的内外网访问问题

原文:解决ArcGIS API for Silverlight 加载地图的内外网访问问题 先上一个类,如下: public class BaseClass { public static string getFullUri(string oldUriString) { string newUriString = oldUriString; //处理相对地址============================================================ if (newUri

ArcGIS API for Silverlight 加载google地图

原文:ArcGIS API for Silverlight 加载google地图 using System; using System.Net; using System.Windows; using System.Windows.Controls; using System.Windows.Documents; using System.Windows.Ink; using System.Windows.Input; using System.Windows.Media; using Syst

ViewPage+frament不预加载下一个Frament数据解决办法

在做一个ViewPage+Frament 滑动数效果,当滑动到每一页时加载哪一页的数据,但是ViewPage会预加载下一也数据,这个问题之前做项目是一直未解决,今天找到一个方法一下子就解决的这个问题,Frament里面有一个setUserVisibleHint方法,setUserVisibleHint每次fragment显示与隐藏都会调用,下面说一下这个方法的使用 @Override public void setUserVisibleHint(boolean isVisibleToUser)

PHP加载另一个文件类的方法

加载另一个文件类的方法 当前文件下有a.php 和b.php,想要在class b中引入class a <?php    class a    {        public $name = 'zhouqi';        public function say()        {            echo 'hello '.$this->name;        }    } <?php    class b    {        //require('a.php'); 错

ArcGIS API for Silverlight加载google地图(后续篇)

原文:ArcGIS API for Silverlight加载google地图(后续篇) 之前在博客中(http://blog.csdn.net/taomanman/article/details/8019687)提到的加载google地图方案,因为google地址问题,看不到图了,发现是url地址变换造成的. 现将如下三个类公布出来,源码如下: using System; using System.Net; using System.Windows; using System.Windows.

ArcGIS api fo silverlight学习二(silverlight加载GraphicsLayer)

上一节学习了silverlight加载GeoServer发布的WMS地图,这一节学习一下加载GraphicsLayer 一.在MainPage.xaml中添加资源配置 <Grid.Resources>            <esri:SimpleMarkerSymbol x:Key="RedMarkerSymbol" Color="Red" Size="12" Style="Circle" />   

MVC中在一个视图中,怎么加载另外一个视图?

在RazorView.cshtml视图: <!--在视图中调用无返回值的方法,视图中调用无返回值的方法,要加上大括号--> <!--在一个视图中,直接加载另外一个视图--> @{ Html.RenderPartial("LoadViewBySelf");} 去加载LoadViewBySelf.cshtml视图: @{ ViewBag.Title = "LoadViewBySelf"; } <h2>LoadViewBySelf<

android开发之Fragment加载到一个Activity中

Fragments 是android3.0以后添加的.主要是为了方便android平板端的开发.方便适应不同大小的屏幕.此代码是为了最简单的Fragment的使用,往一个Activity中添加Fragment,主要涉及的知识点有:1.Fragment类的创建,2.Fragment的添加3.无UI的 Fragment的添加,根据Tag找回Fragment Fragment对应的Xml布局文件, <LinearLayout xmlns:android="http://schemas.andro

类的加载的一个小问题

前言 之前写了一篇文章专门介绍了一下类的加载和对象的创建流程,然后收到了一个博友的疑问,觉得蛮好的,在这里和大家分享下. 博文地址:[Java基础]Java类的加载和对象创建流程的分析 疑问 1 public class Test3 { 2 public static Test3 t = new Test3(); 3 4 { 5 System.out.println("blockA"); 6 } 7 8 static { 9 System.out.println("block