| Hongtao 的个人资料微软必应地图(Bing Maps, former...照片日志列表 | 帮助 |
微软必应地图(Bing Maps, formerly Virtual Earth)Bing Maps for Enterprise |
|||||
|
11月26日 必应地图SilverLight控件入门讲座之三:手动控制地图模式上一讲让我们学会了如何在初始加载地图的时候设置不同的地图模式,例如地图中心位置,放大级别等。很多时候我们希望自己定义按钮来控制不同的地图模式,这在有些应用场景了比较有用。比如我们希望用户只能浏览放大级别3-17范围的地图,只能看北京地图的地图,或者只能显示卫星图等等。
首先,我们把微软默认提供的工具栏隐藏起来,这里用到NavigationVisibility属性,它的取值为Visibility枚举类型:
但是和MSDN上定义有出入的是,Hidden方式目前似乎并不支持,所以大家如果不想显示工具栏,就设置NavigationVisibility="Collapsed"。即修改如下代码:
<m:Map x:Name="myMap" NavigationVisibility="Collapsed" CredentialsProvider="Your Bing Maps Credentials"></m:Map>
接下来我们增加几个按钮。这里需要了解SilverLight的三种布局方式:Canvas,StackPanel,Grid。本文用到StackPanel方式: <StackPanel Orientation="Horizontal" VerticalAlignment="Top" HorizontalAlignment="Left">
<Button x:Name="RoadButton" Content="Road" Click="RoadButton_Click"></Button> <Button x:Name="AerialButton" Content="Aerial" Click="AerialButton_Click"></Button> <Button x:Name="AerialFadebutton" Content="AerialFadeLabel" Click="AerialFadebutton_Click"></Button>
</StackPanel> 关于StackPanel的用法感兴趣的同学自己上网搜一下,否则照搬着使用就行了。关于Button的用法也是。
此处我们增加了三个Button:Road,Aerial,AerialFadeLabel。前两个很好理解,分别显示道路图和卫星图。第三个AerialFadeLabel是BMSL新增的功能,当鼠标在地图上掠过的时候会自动显示路标,否则路标会渐渐隐退。
按钮加上了,但是还需要补充这些按钮的事件代码,即按下这些按钮将执行哪些操作。转到MaiPage.xaml.cs文件,添加命名空间:
using Microsoft.Maps.MapControl;
然后各个Button Click事件的方法中补充如下代码:
private void RoadButton_Click(object sender, RoutedEventArgs e) //显示道路图
{ myMap.Mode = new RoadMode(); } private void AerialButton_Click(object sender, RoutedEventArgs e)//显示卫星图
{ myMap.Mode = new AerialMode(); } private void AerialFadebutton_Click(object sender, RoutedEventArgs e)//显示卫星图,并且设置路标可以渐渐隐退模式
{ AerialMode am = new AerialMode(); am.Labels = true; am.FadingLabels = true; myMap.Mode = am; } 11月25日 必应地图SilverLight控件入门讲座之二:设置初始地图模式上一讲我们介绍了如何通过必应地图SilverLight控件显示地图,但是很多时候我们需要设置地图初始显示的模式,比如地图中心、放大级别、显示卫星地图等等。
补充说明一下,在以前的文章中我提到过Devigner这个概念,就是将Designer和Developer结合,让搞设计的和搞代码的人员都能够开发出很炫的互联网应用。因此必应地图SilverLight控件(Bing Maps SilverLight Control,以下简称BMSL)提供两种开发方式,设计人员可以直接修改xaml预览开发效果,程序员可以通过c#控制地图。因此后续的讲座中我会将两种方式结合着介绍。
首先看一下如何修改xaml。很简单,只需要做如下修改:
<Grid x:Name="LayoutRoot">
<m:Map ZoomLevel="14" Mode="AerialWithLabels" Center="39.9,116.4" CredentialsProvider="Your Bing Maps Key"></m:Map> </Grid> 即为Map对象增加几个属性,例如:
关于Map对象的成员、属性及方法的详细描述参见:
在后续的讲座中会作更多的描述。
接下来我们看一下如何通过C#程序来控制地图。
有几步是必须的:
1)在xaml文件中为Map增加Name属性,相当于为Map对象初始化一个实例:
<m:Map Name="myMap"></m:Map>
2)在xaml.cs文件中增加命名空间:
using Microsoft.Maps.MapControl;
然后我们可以自由控制地图了,我相信很多程序员更喜欢用代码来操作显示地图。如果你希望在地图初始化的时候就设置显示模式,那么初始化页面的方法中增加代码:
public MainPage()
{ InitializeComponent(); myMap.Center = new Location(39.9,116.4); myMap.Mode = new AerialMode();
myMap.ZoomLevel = 14;
} 下一讲介绍如何通过按钮来手动设置地图模式。 11月24日 必应地图SilverLight控件入门讲座之一:显示地图几乎所有的讲座第一讲,是一定要降低难度以鼓励大家快速上手。地图应用的的第一讲莫过于如何显示地图。用必应地图SilverLight控件显示地图似乎比JavaScript更简单。
看图说话吧,没有比这个更简单了。
1、打开VS2008,创建SilverLight Project
2、选择Host the Silverlight application in a new web site
3、添加Bing Maps Silverlight Control Reference,通常在必应地图SilverLight地图控件安装目录下,例如:D:\Program Files\Bing Maps Silverlight Control\V1\Libraries 4、在MainPage.xaml中添加地图命名空间xmlns:m="clr-namespace:Microsoft.Maps.MapControl;assembly=Microsoft.Maps.MapControl" 5、在<Grid>域中增加地图元素,如下所示:
<Grid x:Name="LayoutRoot">
<m:Map/> </Grid> 大功告成,可以显示地图了,编译运行一下吧!是不是比JavaScript还简单
不过由于我们还没有用到Bing Maps Key(参见必应地图SilverLight控件入门讲座之准备工作),所以在操作地图的时候你会发现如下提示:
因此在MainPage,xaml中稍微修改一下:
<m:Map CredentialsProvider="Your Bing Maps Key" />
好了,第一讲完成了。
必应地图SilverLight控件入门讲座之准备工作微软必应地图SilverLight控件(Bing Maps SilverLight Control)推出以后,我一直想写一个入门讲座系列。我坚定的以为小康型互联网时代,SilverLight(或Flash,甚至HTML5等等,whatever)将大有作为。并且确实有不少朋友问起如何开发基于必应地图SilverLight控件的应用,所以将我所掌握的资料整理一下,以尽量简单的方式呈现。
照例,开发基于必应地图SilverLight控件的应用需要如下准备工作:
至此,您可以进入下一讲,开发第一个必应地图SilverLight控件例子。 补充说明一下开发者账号的创建步骤:
后面的讲座中我会说明如何使用Key。 11月20日 中国必应地图发布更新 |
|
||||
|
|