`
jiasongmao
  • 浏览: 667033 次
  • 性别: Icon_minigender_1
  • 来自: 石家庄
社区版块
存档分类
最新评论

Silverlight4:网络地图服务

阅读更多

Bing Maps与Google Earth一样都提供了可以二次开发的AP I,用户通过控件可以自由定制基于浏览器的应用系统,可以在网页上使用服务商提供的数据服务,Bing Maps可以在浏览器中观察到世界上的每一个角落,并可以逐级地改变地图的比例尺,提供矢量地图和卫星地图这两种常见的显示模式。新版的Bing Maps使用了Silverlight技术,极大地增进了Bing Maps的用户体验,比如,缩放地图时可以取得更平滑的效果,同时也使得使用一些更佳的特效成为可能。

  网络服务(Web Service)提供了跨平台、跨语言的互操作能力,为地理信息互操作提供了有效的解决途径。网络地图服务(WebMap Service,WMS)是开放地理信息系统联盟(OGC)制定的网络服务模型中一个基于HTTP协议的地图服务,在WMS中地图被定义为地理数据的可视 化表现,通过一系列操作用户可以获得需要的地图数据。必应地图Silverlight Control SDK下载地址为:

  http://www.microsoft.com/downloads/details.aspx?displaylang=en&FamilyID=beb29d27-6f0c-494f-b028-1e0e3187e830

  为了使用必应地图Silverlight Control,必须拥有必应地图Key,Key为微软为用户开通的一个授权开发密匙,与开发者账号进行绑定才能正常使用,按以下步骤可获得:

  ◎进入到必应地图账户中心https:/ / www.bingmapsportal.com,然后点击创建账户链接。

  ◎ 使用Windows Live ID登录后,需要提供账户名称、联系人姓名、公司名称等信息。

  ◎ 在必应地图账户中心的左侧,点击“Create or view keys”。

  ◎ 在创建界面上,填写应用程序名、对应程序的网址等信息后,点击“Create Key”后将获得key。

  创建项目后,在Silverlight项目中添加必应地图程序集的引用。

  打开MainPage.xaml文件,引入相应命名空间的支持:

  xmlns:m="clr-

  namespace:Microsoft.Maps.MapControl;assembly=Microsoft.Maps.MapControl" 如下面简单的XAML,运行后,就可看到地图了。

<UserControl x:Class="SilverlightApplication7.MainPage"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"    xmlns:m="clr-namespace:Microsoft.Maps.MapControl;assembly=Microsoft.Maps.MapControl"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    mc:Ignorable="d"
    d:DesignHeight="300" d:DesignWidth="400">
    <Grid x:Name="LayoutRoot" Background="White"> <m:Map x:Name="myMap" CredentialsProvider="Apl2yNzBAE7KuwPFxwSMoQRQnvj2u3LgJaxHEPfcaSzTCcbOucxgJDhCJeXpWaX4" Mode="Road"/>
    </Grid>
</UserControl>

 

CredentialsProvider值就是通过Bing Maps账户管理中心创建的所需的Key,Mode为显示模式,有路况模式(Road)和卫星模式(Aerial),分别显示路标和不显示路标,控件默认 加载为路况模式。卫星模式中若要显示路标则设Mode为“AerialWithLabels”。

  地图Map控件其它一些属性有:

  ◎ Center:中心点坐标。

  ◎ ZoomLevel:放大级别。

  ◎ NavigationVisibility:导航菜单显示。

  水文部门及时、准确的水文监测信息,及时捕捉公众对水信息的需求,为区域经济发展、人民生活水平提高,提供了主动、及时、优质、高效的水文信息 服务。这些服务,不少仍以纸质媒体为主,如:《水文年鉴》、《水资源质量状况月(年)报》、《地下水通报》、《水资源公报》等,其实还可通过网络等媒介发 布信息,在提供丰富的水文产品、全面的水文服务的同时,平台的整体的外观和功能同样需要做得丰富多彩,Silverlight 是一种融合了微软的多种技术的Web 呈现技术。它提供了一套开发框架,并通过使用基于向量的图层图像技术,支持任何尺寸图像的无缝整合,对基于ASP.NET、AJAX在内的Web 开发环境实现无缝连接。Silverlight 使开发设计人员能够更好的协作,有效地创造出能在Windows 和Macintosh上多种浏览器中运行的内容丰富、界面绚丽的Web 应用程序———Silverlight 应用程序。

  水文服务器不少并不是基于.Net的,但这不影响推广使用,Silverlight 的开发是需要. net Framework 的。但是,这并不要求客户端需要任何版本的. net Framework。客户端只需要一个Runtime 插件,就可以执行所有内容,包括托管代码。Silverlight 的所有内容都是客户端运行的,因此,服务器端不需要执行任何代码。这样,SilverLight 对于服务器端来讲,只不过是一组文件而已,存放编译后XAP 文件的ClientBin 目录。因此,SilverLight 可以放在任何现有的网站服务器上,不论这个服务器是否有. net 环境,是php 服务器,或者ASP 或者ASP. net 等等。

  水文信息网络地图服务案例使用了Bing Maps Silverlight 控件,结合Silverlight Toolkit中的图表控件,利用Bing Maps地图切片数据实现网络地图服务,方便快捷地获取地图和影像数据,并加载所需的水文信息,从而以较小的成本提供了全方位的水文网络地图服务。

  主要操作步骤及代码如下:

  (一)加载中国地图是信息显示的基础

  ◎ 新建项目,启动Mircrosoft Visual Studio 2010,命名为水文信息ShuiWenInfo,

  ◎在Silverlight项目中,添加必应地图程序集的引用,并声明地图Map控件对应的命名空间的支持。

  xmlns:m="clr-namespace:Microsoft.Maps.MapControl;assembly=Microsoft.Maps.MapControl"

  ◎ 在MainPage.xaml中添加Map控件,并添加站网信息图层layStation和中国地图图层layChina,XAML代码如下:

 

<Grid x:Name="LayoutRoot" Background="White">
<m:Map CredentialsProvider="AmreePcQ50WyjCYvxNo0xUQDwiYVM8VFVTxmcW_1RmOb2x_7T1muW-fSTQQkOok1" x:Name="mapWater"    
         Center="30.4837830422421,108.974539287109" ZoomLevel="6"   >       
          <m:MapTileLayer x:Name="layChina"></m:MapTileLayer>
   <m:MapLayer x:Name="layStation"></m:MapLayer>
  </m:Map>
</Grid>

 ◎ 在程序中加载中国地图,XAML如下:

ublic MainPage()
        {
            InitializeComponent();
            UriBuilder tileSourceUri = new UriBuilder("http://r2.tiles.ditu.live.com/tiles/r{quadkey}.png?g=41");
  //初始化LocationRectTileSource对象,设定显示范围及放大级别
 LocationRectTileSource tileSource = new LocationRectTileSource(tileSourceUri.Uri.ToString(),new LocationRect(new Location(60, 60), new Location(13, 140)),   
           new Range<double>(6, 16));
//设置中国地图图层对象属性
layChina.TileSources.Add(tileSource); 
            layChina.Opacity =1.0;
}

 (二)站网信息的显示。

  站网信息是其它信息显示的基础,开发站网信息平台后再加上其它水情、水质等信息,Bing Maps定义了一些web地图服务, 如点位的图钉标签显示功能,站网信息中的站点图标直接用Bing Maps Silverlight Control中的地图图钉控件Pushpin来表示,具体操作步骤有:

  ◎ 站点信息使用站点类Station来表示,站点类有站名、经度、纬度等信息。

public class Station
    {
        public string  StationName{get;set;}
        public double  Longitude {get;set;}
        public double  Latitude{get;set;}            
    }
◎ 定义全局站网变量listStation,并加载示例数据:
public List<Station> listStation;
public void LoadStations()
        {
            listStation = new List<Station>(){
                 new Station {StationName="大龙山",Longitude=119.02494046378,Latitude=32.0085534220129},
                 new Station {StationName="高峰",Longitude=118.98099515128,Latitude=32.5588631877063},
                 new Station {StationName="张家山",Longitude=118.884864780186,Latitude=31.5345470817377},
……………………………………………
              };
         }

 ◎ 在站网图层上面显示所有站点图标:

public void ShowStation()
        { 
            Pushpin station;
            for (int i =0; i < listStation.Count;i++ )
            {
                station = new Pushpin();                   
     Location location = new Location(listStation[i].Latitude,listStation[i].Longitude);
                ToolTipService.SetToolTip(station, listStation[i].StationName);
                layStation.AddChild(station, location);
                }           
        }

 ◎ 在MainPage.xaml中添加“站网信息”命令按钮以控制站网信息图层layStation的显示。

<StackPanel HorizontalAlignment="Left" VerticalAlignment="Top" Orientation="Horizontal" Background="Gray">
            <Button Margin="5" Width="100" Height="30" x:Name="btStation" Click="btStation_Click" >
                <TextBlock FontSize="15">站网信息</TextBlock>
            </Button>
   </StackPanel>

 对应的单击处理事件为:

private void btStation_Click(object sender, RoutedEventArgs e)
        {
            if(layStation.Visibility ==Visibility.Visible )
                layStation.Visibility = Visibility.Collapsed;
            else
                layStation.Visibility = Visibility.Visible ;  
        }

 (三)实时水位显示

  水情信息中主要是水位,现添加实时水位显示的功能,具体步骤有:

  ◎ 在站点类Station的变量中,增加水位变量WaterLevel。

public
 class
 Station

    {

        public
 string
  StationName{get
;set
;}

        public
 double
  Longitude {get
;set
;}

        public
 double
  Latitude{get
;set
;}
  
        public
 double
  WaterLevel{get
;set
;}
        
    }

 

加载数据时,也添加水位值 ,如下

listStation = new
 List<Station>(){

                 new
 Station {
StationName="大龙山"
,Longitude=119.02494046378
,Latitude=32.0085534220129
,WaterLevel=15.63
}
,
                  new
 Station {
StationName="母山"
,Longitude=117.687355014561
,Latitude=31.8733710133861
,WaterLevel=18.33
}
,
            ……………………………………
..
}

◎ 在Silverlight项目中添加水位显示的用户控件WaterLeverl,界面设计如下:

<Grid
 x:Name=
"LayoutRoot"
 Background=
"White"
>

        <Border
  BorderBrush=
"Red"
 BorderThickness=
"1.0"
 >

            <StackPanel
 >

                <TextBox
 x:Name=
"txtWater"
  TextWrapping=
"NoWrap"
 />
    
            </StackPanel>

        </Border>

    </Grid>

定义一个水位变量,代码如下:

public
 partial
 class
 WaterLever
 : UserControl
    {
       
        public
 WaterLever
()
        {

            InitializeComponent();                                
        }

        public
 double
 lever 
        {
 
            set{

                txtWater.Text = value
.ToString ();
            }

            get{

                return
 double
.Parse(txtWater.Text);
            }

        }
        
    }

◎ 在Main.xaml文件中添加水位图层。

<m:MapLayer x:Name="layWater"></m:MapLayer>

  ◎ 在水位图层上显示水位。

public
 void
 ShowWater
()
        {
          
            WaterLever water;
            for
 (int
 i = 0
; i < listStation.Count; i++)
            {
             
                water = new
 WaterLever();
Location location = new
 Location(listStation[i].Latitude, listStation[i].Longitude);
                ToolTipService.SetToolTip(water, listStation[i].StationName);
                water.lever = listStation[i].WaterLevel;
                layWater.AddChild(water, location);
            }

        }

◎ 控制水位图层的显示。

private
 void
 btWater_Click
(object
 sender, RoutedEventArgs e)
      {

            if
 (layWater.Visibility == Visibility.Visible)
                layWater.Visibility = Visibility.Collapsed;
            else

                layWater.Visibility = Visibility.Visible;
        }

运行后效果如图:

 

本文出自 “蓝海战术” 博客,请务必保留此出处http://wanxl.blog.51cto.com/2129901/405221

分享到:
评论

相关推荐

    silverlight 开发的地图

    Silverlight是微软推出的一种RIA(富互联网应用)平台,它允许开发者创建具有丰富媒体体验和高度交互性的网络应用,尤其适合制作图形密集型的应用,如地图服务。 在描述中提到的链接是一个博客文章,虽然具体内容...

    Silverlight富媒体特效地图实例

    本实例聚焦于Silverlight在构建富媒体特效地图方面的应用,具体是利用Bing Maps服务来实现这一功能。下面我们将深入探讨Silverlight与Bing Maps的结合以及相关技术知识点。 首先,Silverlight提供了丰富的图形和...

    Silverlight网络游戏飞行岛2.0源码

    《Silverlight网络游戏飞行岛2.0源码》是一款基于Microsoft Silverlight技术开发的网络游戏,它展示了Silverlight在游戏开发中的应用。Silverlight是微软推出的一种RIA(Rich Internet Application)技术,用于创建...

    arcgis silverlight 地图模板

    1. **地图控件**:展示了如何在Silverlight应用中嵌入地图,包括加载地图服务、设置初始视图、缩放和平移等操作。 2. **图层管理**:可能包含不同数据源的图层管理,如矢量图层、栅格图层或服务图层的添加、隐藏、...

    SilverLight+Expression Designer实现对地图特定区域的操作

    4. **动态效果**:利用SilverLight的动画系统,可以为地图区域添加动态效果,比如鼠标悬停时的高亮显示,或者点击后的放大缩小效果。 5. **地图服务集成**:为了更真实地展现地图,可以集成地图服务,如Bing Maps ...

    ArcGIS API for Silverlight 3.0

    4. **添加服务**:连接到ArcGIS Server或ArcGIS Online,加载地图服务、图层服务。 5. **编写代码**:在后台代码中实现地图操作、事件处理、地理编码等功能。 6. **调试与发布**:在开发环境中测试应用,调试问题,...

    arcgis api for silverlight

    6. **服务端与客户端的通信**:ArcGIS Server与Silverlight客户端可以通过SOAP或RESTful接口进行通信,获取和操作地图服务数据。 7. **银光(Silverlight)优势**:Silverlight作为.NET Framework的一部分,提供了...

    零基础学通Silverlight4

    第一章 主要工具安装 1.1 安装Visual Studio 2010 1.2 安装Silverlight 4工具包 1.3 安装Expression Blend 4 1.4 安装SQL Server 2008 Express 第二章 Expression Blend入门 ...第十章 网络地图服务

    学习教程大全:GIS for Silverlight:2023年.pdf

    而Silverlight则更侧重于跨平台、跨浏览器的网络应用,因此在GIS领域,它为开发者提供了在Web环境中构建高性能GIS应用的可能性。 在GIS的未来趋势中,云计算(Cloud Computing)和RIA(Rich Internet Applications...

    ArcGIS 3.1 for Silverlight

    2. **地图服务**:API允许开发者接入Esri提供的各种地图服务,包括基础地图、专题图层、地形图等,同时支持自定义地图服务,使用户能够构建具有个性化内容的地图应用。 3. **图层管理**:开发者可以添加、删除和...

    GoogleMap地图搜索(Silverlight版)源码201291

    源码的提供为我们提供了深入理解如何利用Silverlight与Web服务接口集成以构建地图应用的宝贵机会。 1. **搜索功能**: - **按地址搜索**:这是最常见的地图搜索方式,用户输入街道地址、城市或邮政编码,系统会...

    ArcGis for silverlight 加载 Google Maps 切片数据

    而Google Maps的切片数据则是Google Maps服务中的一种图像分块形式,通常用于提供高效的网络地图服务。 首先,我们需要了解Silverlight,这是一个由Microsoft开发的富互联网应用程序(RIA)平台,用于创建具有丰富...

    ArcGIS For Silverlight 2.0

    总的来说,ArcGIS For Silverlight 2.0 是一款集成了地图绘制、数据分析、服务接口等功能的GIS开发框架,它利用Silverlight的强大性能,为开发者提供了构建高级地图应用的可能。通过深入理解和熟练运用这一工具,...

    silverlight for arcgis 服务调用,经纬度定位

    使用ArcGIS API for Silverlight中的`MapService`类,我们可以加载地图服务,然后使用`Layer`类将服务添加到地图控件中。 2. **经纬度定位**:在地图应用中,我们可能需要根据特定的经纬度坐标来定位地图。在...

    SuperMap iClient 6R for Silverlight 地图卷帘

    **SuperMap iClient 6R for Silverlight 地图卷帘技术详解** 在GIS(地理信息系统)领域,SuperMap iClient 6R是一款强大的Web GIS客户端开发框架,它支持多种平台,包括Silverlight版本。本篇文章将深入探讨“地图...

    ArcGIS API for Silverlight开发入门

    ArcGIS API for Silverlight是Esri公司推出的一款用于构建地理信息系统(GIS)Web应用程序的开发工具,它利用Microsoft Silverlight技术为Web开发者提供了强大的地图绘制、地理数据处理和空间分析功能。本文将深入...

    ESRI arc gis Silverlight

    - **服务接口**:通过 ArcGIS Server 提供地图服务,实现地图数据的动态加载和更新。 - **图层控制**:可以叠加多个图层,每个图层可独立配置属性,如透明度、符号样式等。 - **标记与注解**:允许用户在地图上...

    Silverlight编程基本知识及技巧

    2. **Socket通信实现Silverlight客户端实时数据获取**:Silverlight支持通过Socket进行网络通信,允许应用实时接收和发送数据。在示例中,模拟了GPS数据的获取,这可能涉及到使用Socket连接到服务器,接收并处理实时...

Global site tag (gtag.js) - Google Analytics