图文并茂讲解BingMap在WP7中的使用

  在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。我发现在调试时才能看到效果,而在直接运行时却一闪而过,一直没搞清楚,哪位有兴趣的大侠有兴趣研究一下,告知在下,谢谢

posted @ 2010-12-21 23:51  ForrestWoo  阅读(1438)  评论(4编辑  收藏  举报