`
gstarwd
  • 浏览: 1538854 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

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

阅读更多

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

 

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

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

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

 

代码
<!-- <br/ /><br/ />Code highlighting produced by Actipro CodeHighlighter (freeware)<br/ />http://www.CodeHighlighter.com/<br/ /><br/ />-->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代码如下:

 

代码
<!-- <br/ /><br/ />Code highlighting produced by Actipro CodeHighlighter (freeware)<br/ />http://www.CodeHighlighter.com/<br/ /><br/ />-->< 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异常。

 

代码

 

代码
<!-- <br/ /><br/ />Code highlighting produced by Actipro CodeHighlighter (freeware)<br/ />http://www.CodeHighlighter.com/<br/ /><br/ />-->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"属性,值得到当前显示地图的中心坐标点(精度, 纬度)。

 

代码
<!-- <br/ /><br/ />Code highlighting produced by Actipro CodeHighlighter (freeware)<br/ />http://www.CodeHighlighter.com/<br/ /><br/ />-->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,如下为地图设置默认的加载变焦级别。

代码
<!-- <br/ /><br/ />Code highlighting produced by Actipro CodeHighlighter (freeware)<br/ />http://www.CodeHighlighter.com/<br/ /><br/ />-->< m:Map  CredentialsProvider ="AkzZURoD0H2Sle6Nq_DE7pm7F3xOc8S3CjDTGNWkz1EFlJJkcwDKT1KcNcmYVINU"  x:Name ="map"  
       NavigationVisibility
="Collapsed"  
       ZoomLevel
="5" >
</ m:Map >

 

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

代码
<!-- <br/ /><br/ />Code highlighting produced by Actipro CodeHighlighter (freeware)<br/ />http://www.CodeHighlighter.com/<br/ /><br/ />-->private   void  ZoomLevel_Click( object  sender, RoutedEventArgs e)
{
    
double  zoomLevel  =  1d;
    
double .TryParse( this .tbZoomLevel.Text.Trim(),  out  zoomLevel);
    
this .map.ZoomLevel  =  zoomLevel;
}

 

        

 

相关说明

 本文属学习笔记文章,愿与有志者共同学习交流。欢迎转载,但请在明显地位标记本文的原文连接。  

作      者:Beniao

文章出处:http://beniao.cnblogs.com/   或  http://www.cnblogs.com/

 

分享到:
评论

相关推荐

    【Silverlight】Bing Maps系列文章

    【Silverlight】Bing Maps系列文章【Silverlight】Bing Maps系列文章【Silverlight】Bing Maps系列文章【Silverlight】Bing Maps系列文章【Silverlight】Bing Maps系列文章【Silverlight】Bing Maps系列文章

    Silverlight_Bing_Maps地图插件

    Silverlight_Bing_Maps地图插件安装-CSDN

    Bing Maps开发手册中文电子版(B3)

    - **Bing Maps**:是由微软公司开发的地图服务,提供了一系列丰富的地理信息和服务,支持多种平台和应用开发。 - **开放API**:为了方便开发者利用Bing Maps进行应用开发,微软提供了开放的API接口,其中包括...

    使用Silverlight Bing Map 加载Google Map

    Silverlight是一种由Microsoft开发的客户端插件技术,用于在Web浏览器中提供丰富的交互式用户体验,而Bing Maps则是微软提供的一个强大的地图服务。将Google Maps集成到Silverlight Bing Maps中,可以让开发者利用两...

    Bing Maps 教程(从入门到精通)

    本篇主要介绍了 Bing Maps Silverlight Control 的基础开发环境搭建、显示地图的方法、控制地图的操作、使用图钉层和地图图层以及绘制多边形图形等知识点。通过这些基础知识的学习,开发者可以更加深入地掌握 Bing ...

    使用 Bing Maps

    - Bing Maps Silverlight 控件是专门为Windows Phone设计的,它允许开发者将地图功能无缝集成到应用程序中。 - 控件提供了基本的地图显示,包括缩放、平移和旋转操作,以及对地图样式、图层和图标的自定义。 - ...

    Silverlight富媒体特效地图实例

    1. **Bing Maps API**:学习如何使用Bing Maps API,包括初始化地图控件、设置地图中心点和缩放级别、添加图层等。此外,还要了解如何获取地图的点击事件,以便在地图上实现交互式功能。 2. **Silverlight动画和...

    bingmaps 开发实际例子

    学习这个示例可以帮助你更好地理解如何在Silverlight环境中有效地使用Bing Maps,尽管Silverlight现在已经不再被广泛使用,但这些基础知识对于理解现代地图API和GIS(地理信息系统)技术仍然是有价值的。

    Windows_Phone_7_使用BingMaps

    Bing Maps Silverlight Control for Windows Phone 结合了 Silverlight 和 Bing Maps 的功能,为开发者提供了强大的地图体验工具。开发人员可以利用这一工具将最新的位置和本地搜索功能融入到他们的 Windows Phone ...

    Silverlight-bing map demo

    总的来说,"Silverlight-bing map demo"项目展示了如何通过Silverlight 4和C#结合Bing Maps API,打造一个具有地图展示、交互和功能性的应用。这个示例对于学习和实践地理信息系统(GIS)以及Web开发的开发者来说,...

    必应地图Silverlight控件

    在给定的压缩包文件中,我们可以找到两个关键的DLL文件:Microsoft.Maps.MapControl.Common.dll和Microsoft.Maps.MapControl.dll,它们是实现必应地图Silverlight功能的核心组件。 1. Microsoft.Maps.MapControl....

    ComponentOne WPF及Silverlight版Maps 官方中文帮助文档

    WPF及Silverlight版Maps支持视图的平滑缩放、平移以及屏幕与地理坐标之间的映射,并将它们置于工具栏中预览。C1Map允许您从不同的资源中获取丰富的地理信息,如Bing Maps,Google Maps。基于Microsoft Deep Zoom技术...

    ComponentOne WPF及Silverlight版Maps官方中文帮助文档chm格式

    WPF及Silverlight版Maps支持视图的平滑缩放、平移以及屏幕与地理坐标之间的映射,并将它们置于工具栏中预览。C1Map允许您从不同的资源中获取丰富的地理信息,如Bing Maps,Google Maps。基于Microsoft Deep Zoom技术...

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

    5. **地图服务集成**:为了更真实地展现地图,可以集成地图服务,如Bing Maps API。这可以让用户看到真实的地理图像,并在此基础上进行交互。 6. **代码逻辑**:在后台C#代码中,编写逻辑处理地图区域的事件,实现...

    Ldh.Maps V1.1示例

    Bing Maps是由微软开发的一款强大的地图服务,它提供了丰富的地图数据和API,用于构建地图应用程序。通过集成Bing Maps控件,开发者可以轻松地将地图功能嵌入到他们的应用程序中,实现地图显示、定位、导航等功能。...

    Silverlight环境下使用调用网页使用超链接

    对于电子地图的实现,Silverlight提供了多种库和API,例如Microsoft Bing Maps SDK,它允许开发者嵌入地图并进行定制化操作,如缩放、平移、添加标记等。通过集成Bing Maps SDK,可以创建交互式地图,并将其集成到...

    arcgis silverlight开发讲义

    - **支持的地图类型**:包括动态地图(Dynamic Maps)和缓存地图(Tiled Maps),同时还可以使用Bing Maps Services作为地图源。 - **图形元素**:支持点、线、面等图形元素,并提供了丰富的符号(Symbol)和渲染(Renderer...

    Ldh.Maps开源代码

    Ldh.Maps开源项目正是这样一个专注于地图服务的库,它封装了Bing Maps组件,并且扩展了其他地图服务,如Mapabc和Google Maps,提供了多样化的地图绘制功能,如线、圆、多边形、矩形以及图钉等,还支持聚合图层,极大...

    Bing_Map_App_SDK.zip

    《Bing地图应用SDK在Silverlight中的应用与详解》 微软的Bing地图应用软件开发工具包(SDK)为开发者提供了强大的地图集成能力,尤其在Silverlight环境下,它能够帮助开发者构建具有高度交互性和视觉吸引力的地图...

    ArcGis for Silverlight案例

    1. **地图服务**:ArcGIS for Silverlight 支持多种地图服务类型,如 ArcGIS Server 地图服务、Bing Maps 服务等。 2. **图层管理**:支持动态添加、移除或更新图层,方便用户根据需要调整地图内容。 3. **空间查询*...

Global site tag (gtag.js) - Google Analytics