【Silverlight】Bing Maps学习系列(三):如何控制地图

简介:
 本篇主要介绍如何对地图的一些常用控制操作,包括地图加载模式、根据精度和纬度定位、变焦程度等。
 
一、动态设置地图加载模式
  在 本系列二中介绍了地图加载模式,可以给地图控件设置一种模式的地图加载模式,呈现数据的时候根据制定的模式加载地图。其实我们也可以通过程序动态的来改变地图的加载呈现模式,方式和设置模式加载模式是一样的,都是通过地图控件(Bing Maps Silverlight Control)的Mode属性来控制。
  比如在程序中实现上篇文章中所描述的三种模式地图的显示,可以如下来编写代码实现:
 
代码
private void Road_Click(object sender, RoutedEventArgs e)
{
    this.map.Mode = new RoadMode();
}

private void Aerial_Click(object sender, RoutedEventArgs e)
{
    this.map.Mode = new AerialMode(false);
}

private void AerialLabel_Click(object sender, RoutedEventArgs e)
{
    this.map.Mode = new AerialMode(true);
}
 
  通过布局三个按钮分别来实现三种模式的切换,对应的前端Silverlight代码如下:
 
代码
<Grid x:Name="LayoutRoot" Width="500" Height="500">
    
<m:Map CredentialsProvider="AkzZURoD0H2Sle6Nq_DE7pm7F3xOc8S3CjDTGNWkz1EFlJJkcwDKT1KcNcmYVINU" x:Name="map" NavigationVisibility="Collapsed">
    
</m:Map>
    
<StackPanel HorizontalAlignment="Left" VerticalAlignment="Top" Orientation="Horizontal" Background="Gray">
        
<Button Margin="5" Width="100" Height="30" Click="Road_Click">
            
<TextBlock>路径模式</TextBlock>
        
</Button>
        
<Button Margin="5" Width="100" Height="30" Click="Aerial_Click">
            
<TextBlock>卫星模式(无路标)</TextBlock>
        
</Button>
        
<Button Margin="5" Width="100" Height="30" Click="AerialLabel_Click">
            
<TextBlock>卫星模式(有路标)</TextBlock>
        
</Button>
    
</StackPanel>
</Grid>
          
 
 
二、动态定位(Location)
   可以说所有地图系统(比如常见的Google Maps,Bing Maps,ArcGIS,MapInfo等)都是通过精度(Longitude)和纬度(Latitude)来进行定位。在Bing Maps开发中,我们也可以做到动态定位,Bing Maps Silverlight Control提供了动态定位的相关API我们可以直接调用。
  地图的精度和纬度都是通过double类型值表示(经测试Bing Maps中设置int,float类型值也可以),在设置精度纬度的时候需要注意,错误的度值会引发Silverlight异常。
 
代码
 
代码
private void Dynamic_Click(object  sender, RoutedEventArgs e)
{
    
double latitude = 0
;
    
double longitude = 0
;

    
double.TryParse(tbLatitude.Text, out
 latitude);
    
double.TryParse(tbLongitude.Text, out
 longitude);
    
this.map.SetView(new Location(latitude, longitude), 5
);
}
 
  SetView方法提供了多个重载版本,其中一个重载为通过Location对象使用精度和纬度构造地图坐标以及地图变焦程度参数来进行地图坐标定位。地图定位的精度和纬度表示的坐标为当前地图显示区域的中心点,可以使用地图控件的"Center"属性,值得到当前显示地图的中心坐标点(精度,纬度)。
 
代码
public  MainPage()
{
    InitializeComponent();
    
this.map.ViewChangeOnFrame += delegate(object
 sender, Microsoft.Maps.MapControl.MapEventArgs e)
    {
        
double longitude = this
.map.Center.Longitude;
        
double latitude = this
.map.Center.Latitude;
    };
}
 
三、动态设置变焦程度
   地图变焦也可以说是镜头的放大与缩小程度,可以通过对地图控件设置ZoomLevel属性进行动态控制。变焦的取值是有限的只能取值1---16,如下为地图设置默认的加载变焦级别。
代码
<m:Map CredentialsProvider="AkzZURoD0H2Sle6Nq_DE7pm7F3xOc8S3CjDTGNWkz1EFlJJkcwDKT1KcNcmYVINU" x:Name="map"  
       NavigationVisibility
="Collapsed"
 
       ZoomLevel
="5">

</m:Map>
 
  也支持动态设置变焦程度,通过程序动态改变ZoomLevel的值就OK了,如下示例代码:
代码
private void ZoomLevel_Click(object  sender, RoutedEventArgs e)
{
    
double zoomLevel =
 1d;
    
double.TryParse(this.tbZoomLevel.Text.Trim(), out
 zoomLevel);
    
this.map.ZoomLevel =
 zoomLevel;
}
 




本文转自 beniao 51CTO博客,原文链接:http://blog.51cto.com/beniao/260747,如需转载请自行联系原作者

目录
相关文章
|
Web App开发 定位技术 Windows
SuperMap iClient for Silverlight 加载天地图
  效果图如下: 上代码: ...
845 0
|
API 定位技术
解决ArcGIS API for Silverlight 加载地图的内外网访问问题
先上一个类,如下: public class BaseClass { public static string getFullUri(string oldUriString)...
784 0
|
API 定位技术
ArcGIS API for Silverlight 地图加载进度条类之MapProgressBar
ESRI之MapProgressBar类的API函数地址如下链接,具体属性和方法,请参考: http://help.
1069 0
|
前端开发 API 定位技术
ArcGIS API for Silverlight 鼠标移入移出地图要素弹出窗口(优化处理)
     在之前博客里的ArcGIS API for Silverlight 弹出框实例中,是通过点击地图要素,弹出框,但是由于没有控制元素个数,只是通过显示隐藏来进行的话,在鼠标移入和移出操作中,会出现鼠标移入的时候,总不能立刻弹出框,而是需要多次才行,用户体验较差,现在通过控制加入一个弹出框,移出时去除刚加入的弹出框,严格控制弹出框个数来实现。
1030 0
|
监控 前端开发 API
ArcGIS API for Silverlight 点击地图弹出自定义窗体
在之前的博客中,关于弹出窗体,样式比较单一,不能满足自定义各种样式,源连接地址:http://blog.
576 0
|
API 定位技术 图形学
ArcGIS API for Silverlight 地图中解决点众多的簇解决方法
1、通用类 #region 多点的簇显示 public class SumClusterer : GraphicsClusterer { public...
769 0
|
前端开发 定位技术 数据库
Silverlight Map 矢量地图构建过程分析
本文主要结合SQLSERVER2008的空间数据库的一些特性,讲解Silverlight在矢量地图绘制方面的一些技术点。服务器端负责提供数据服务,客户端负责图形的绘制,当然这个过程会遇到性能瓶颈,但本文的重点在于地图数据模型的转化过程,以及Silverlight的数据绑定与数据模型间的关系的理解。
830 0

热门文章

最新文章