背景
之前我们在Surface2上使用Bing map的时候,不得不使用WebControl+Bing Maps Silverlight Control的方式来完成,现在微软终于发布了Bing Maps WPF Control。我们可以使用原生的Bing Maps控件了。
下载Bing Maps WPF Control
请到http://www.microsoft.com/download/en/details.aspx?id=27165下载并安装
如何使用Bing Maps WPF Control
下面演示如何在Surface2项目中使用Bing Maps WPF Control。
下载并安装Surface2 sdk
如果没有安装Surface2 sdk,请在http://www.microsoft.com/download/en/details.aspx?displaylang=en&id=26716进行下载安装。
创建Surface2项目
创建一个Surface2的项目
引用Microsoft.Maps.MapControl.WPF.dll
增加对Microsoft.Maps.MapControl.WPF.dll的引用,该DLL可能位于Program Files或者Program Files (x86)下,例如C:\Program Files (x86)\Bing Maps WPF Control\Beta\Libraries
增加XML命名空间
在Xmal文件中增加对Microsoft.Maps.MapControl.WPF引用的命名空间
xmlns:m="clr-namespace:Microsoft.Maps.MapControl.WPF;assembly=Microsoft.Maps.MapControl.WPF"
增加Map标签
在内容网格(content grid)上增加一个Map标签,如下所示
<s:SurfaceWindow x:Class="SurfaceApplicationBingMaps.SurfaceWindow1" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:s="http://schemas.microsoft.com/surface/2008" xmlns:m="clr-namespace:Microsoft.Maps.MapControl.WPF;assembly=Microsoft.Maps.MapControl.WPF" Title="SurfaceApplicationBingMaps" > <Grid> <m:Map/> </Grid> </s:SurfaceWindow>
现在启动一下程序,我们已经看到Bing Map了。
与其他Bing Maps控件一样,需要一个key把中间的版权信息去掉。这个key是免费申请的,可以参考我之前制作的视频。
Silverlight for Windows Phone 开发系列课程(15):Bing Maps控件
把key放到CredentialsProvider
<m:Map CredentialsProvider="请输入你的key" />
如下所示,增加了key以后,中间的版权信息就消失了。
操控Bing Maps控件
幸运的是操控Bing Maps控件的方式与Bing Maps WPF与Silverlight和Windows Phone版本的一样,详情可以参考我的视频Silverlight for Windows Phone 开发系列课程(15):Bing Maps控件,下面简单演示一下如何操控Bing Maps控件。
<m:Map CredentialsProvider="请输入你的key" Mode="AerialWithLabels" Center="37.806029,-122.407007" ZoomLevel="16" />
在上面的Xmal中,我把地图的Mode(显示模式,一个为卫星图,公路图等),中心点和缩放大小进行了修改,效果如下所示:
广告时间,更多的操作请参考我之前制作的视频。
地图服务
地图服务主要支持根据经纬度查询地址,根据地址查询经纬度,根据起始点和终点计算路线等。Bing Maps WPF控件的地图服务与Silverlight和Windows Phone上使用的版本一样,因为都是同一个WCF服务,所以请参考我的视频,调用地图服务部分。
在Surface2上的演示
实际上这个控件支持鼠标操作,例如滚动鼠标中间的转轮时会缩放地图。但是在Surface2上没有鼠标,平常我使用支持多点触碰的屏幕进行测试,但是如果没有多点触摸屏,我们也使用Surface2的sdk来模拟Pinch-to-Zoom(缩放)操作。下面讲述如何模拟该操作。
首先启动Surface Input Simulator,如下图
后点击按钮,这样鼠标操作就转变成touch操作了。首先在使用鼠标左键点击要放置手指的地方,手指变成红色,然后点击右键,手机会贴在该位置上,我存放了4个手指(模拟除大拇指以外的手指)在地图上,然后拖到第五个手指(模拟大拇指)来继续缩放,surface2支持42个手指同时操作。
演示到这里,随着Windows 8的发布(一起关注9月份的BUILD大会),基于触摸的程序会越来越流行,Surface sdk把WPF带入触摸的世界,大量地简化我们开发触摸设备的工作。
本文转自Jake Lin博客园博客,原文链接:http://www.cnblogs.com/procoder/archive/2011/08/24/Bing-Maps-Control-for-WPF-and-Surface2.html,如需转载请自行联系原作者