网站导航免费论文 原创论文 论文搜索 作业答案 网学软件 学术大家 资料中心 会员中心 问题解答 定作论文 论文素材 设计下载 最新论文 下载排行 论文上传 在线投稿 联系我们
返回网学首页
最新论文 推荐专题 热门论文 素材专题
当前位置: 网学 > 设计资源 > Silverlight > 正文
Bing Maps学习系列(三):如何控制地图
来源:Http://myeducs.cn 联系QQ:点击这里给我发消息 作者: Admin 发布时间: 10/07/17

本篇主要介绍如何对地图的一些常用控制操作,包括地图加载模式、根据精度和纬度定位、变焦程度等。

一、动态设置地图加载模式

  在本系列二中介绍了地图加载模式,可以给地图控件设置一种模式的地图加载模式,呈现数据的时候根据制定的模式加载地图。其实我们也可以通过程序动态的来改变地图的加载呈现模式,方式和设置模式加载模式是一样的,都是通过地图控件(Bing Maps Silverlight Control)的Mode属性来控制。

  比如在程序中实现上篇文章中所描述的三种模式地图的显示,可以如下来编写代码实现:

  1. private void Road_Click(object sender, RoutedEventArgs e) 
  2.     this.map.Mode = new RoadMode(); 
  3.  
  4. private void Aerial_Click(object sender, RoutedEventArgs e) 
  5.     this.map.Mode = new AerialMode(false); 
  6.  
  7. private void AerialLabel_Click(object sender, RoutedEventArgs e) 
  8.     this.map.Mode = new AerialMode(true); 

通过布局三个按钮分别来实现三种模式的切换,对应的前端Silverlight代码如下:

  1. <Grid x:Name="LayoutRoot" Width="500" Height="500"> 
  2.     <m:Map CredentialsProvider="AkzZURoD0H2Sle6Nq_DE7pm7F3xOc8S3CjDTGNWkz1EFlJJkcwDKT1KcNcmYVINU" x:Name="map" NavigationVisibility="Collapsed"> 
  3.     </m:Map> 
  4.     <StackPanel HorizontalAlignment="Left" VerticalAlignment="Top" Orientation="Horizontal" Background="Gray"> 
  5.         <Button Margin="5" Width="100" Height="30" Click="Road_Click"> 
  6.             <TextBlock>路径模式</TextBlock> 
  7.         </Button> 
  8.         <Button Margin="5" Width="100" Height="30" Click="Aerial_Click"> 
  9.             <TextBlock>卫星模式(无路标)</TextBlock> 
  10.         </Button> 
  11.         <Button Margin="5" Width="100" Height="30" Click="AerialLabel_Click"> 
  12.             <TextBlock>卫星模式(有路标)</TextBlock> 
  13.         </Button> 
  14.     </StackPanel> 
  15. </Grid> 

二、动态定位(Location)

  可以说所有地图系统(比如常见的Google Maps,Bing Maps,ArcGIS,MapInfo等)都是通过精度(Longitude)和纬度(Latitude)来进行定位。在Bing Maps开发中,我们也可以做到动态定位,Bing Maps Silverlight Control提供了动态定位的相关API我们可以直接调用。

  地图的精度和纬度都是通过double类型值表示(经测试Bing Maps中设置int,float类型值也可以),在设置精度纬度的时候需要注意,错误的度值会引发Silverlight异常。

  1. private void Dynamic_Click(object sender, RoutedEventArgs e) 
  2.     double latitude = 0; 
  3.     double longitude = 0; 
  4.  
  5.     double.TryParse(tbLatitude.Text, out latitude); 
  6.     double.TryParse(tbLongitude.Text, out longitude); 
  7.     this.map.SetView(new Location(latitude, longitude), 5); 

SetView方法提供了多个重载版本,其中一个重载为通过Location对象使用精度和纬度构造地图坐标以及地图变焦程度参数来进行地图坐标定位。地图定位的精度和纬度表示的坐标为当前地图显示区域的中心点,可以使用地图控件的"Center"属性,值得到当前显示地图的中心坐标点(精度,纬度)。

  1. public MainPage() 
  2.     InitializeComponent(); 
  3.     this.map.ViewChangeOnFrame += delegate(object sender, Microsoft.Maps.MapControl.MapEventArgs e) 
  4.     { 
  5.         double longitude = this.map.Center.Longitude; 
  6.         double latitude = this.map.Center.Latitude; 
  7.     }; 

三、动态设置变焦程度

  地图变焦也可以说是镜头的放大与缩小程度,可以通过对地图控件设置ZoomLevel属性进行动态控制。变焦的取值是有限的只能取值1---16,如下为地图设置默认的加载变焦级别。

  1. <m:Map CredentialsProvider="AkzZURoD0H2Sle6Nq_DE7pm7F3xOc8S3CjDTGNWkz1EFlJJkcwDKT1KcNcmYVINU" x:Name="map"  
  2.        NavigationVisibility="Collapsed"  
  3.        ZoomLevel="5"> 
  4. </m:Map> 

也支持动态设置变焦程度,通过程序动态改变ZoomLevel的值就OK了,如下示例代码

  1. private void ZoomLevel_Click(object sender, RoutedEventArgs e) 
  2.     double zoomLevel = 1d; 
  3.     double.TryParse(this.tbZoomLevel.Text.Trim(), out zoomLevel); 
  4.     this.map.ZoomLevel = zoomLevel; 

  • 上一篇资讯: Silverlight3的新功能
  • 网学推荐

    免费论文

    原创论文

    浏览:
    设为首页 | 加入收藏 | 论文首页 | 论文专题 | 设计下载 | 网学软件 | 论文模板 | 论文资源 | 程序设计 | 关于网学 | 站内搜索 | 网学留言 | 友情链接 | 资料中心
    版权所有 电话:013574892963 QQ:3710167 邮箱:Educs@163.com 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
    Copyright 2008-2015 Www.myeducs.Cn All Rights Reserved
    湘ICP备09003080号