在WP7开发中,又许多在Silverlight中可以用的控件也能在WP7中应用,比如BingMap控件,下面我将详细介绍一下如何在WP7中运用必应地图,本文囊括一些最基本的知识。
一、开发前准备
详细见博客http://www.cnblogs.com/salam/archive/2010/07/28/1787096.html。
1.下载BingMap组件
2.注册供开发BingMap的Key
二、应用
1.新建项目
2.导入BingMap程序集,这些程序集位于Bingmap的安装路径下
这时如果编译的话会看到如下错误信息,这时由于缺少一个中间程序集
3.导入System.Windows.Browser.dll此程序集,它在Silverlight安装路径下
这时上述错误将被解决
4.MainPage.xaml
引入程序集: xmlns:map="clr-namespace:Microsoft.Maps.MapControl;assembly=Microsoft.Maps.MapControl"
添加地图控件
<map:Map x:Name="myMap"
CredentialsProvider="AkGGA_JlwP7XGV8JxIPb8oEWxrInlLMGKpCe7QM4QB5cg4UGNCqUyjqVfC0B2-XC"
Height="500" Width="500" NavigationVisibility="Collapsed" Mode="Road"/>
其中CredentialsProvider是注册的Key值
这时会看到如下界面
5.实现中文版BIngMap
(1)中文图片层类
public class ChinaTileSource
{
public TileSource GetChinaTileSource()
{
//中文图片层地址
UriBuilder tileSourceUri = new UriBuilder("http://r2.tiles.ditu.live.com/tiles/r{quadkey}.png?g=41");
MapTileLayer tileLayer = new MapTileLayer();
LocationRectTileSource tileSource = new LocationRectTileSource(tileSourceUri.Uri.ToString()
, new LocationRect(new Location(60, 60), new Location(13, 140)), new Range<double>(1, 16));
return tileSource;
}
}
(2)运用
public MainPage()
{
InitializeComponent();
MapTileLayer tileLayer = new MapTileLayer();
ChinaTileSource gts = new ChinaTileSource();
tileLayer.TileSources.Add(gts.GetChinaTileSource());
myMap.Children.Add(tileLayer);
this.myMap.Mode = new MercatorMode();
}
效果如下图
附:1。源码地址:https://files.cnblogs.com/salam/WindowsPhoneMap.rar
2。了解更多关于BingMap开发请到:http://www.cnblogs.com/salam/tag/BingMap/
3。我发现在调试时才能看到效果,而在直接运行时却一闪而过,一直没搞清楚,哪位有兴趣的大侠有兴趣研究一下,告知在下,谢谢