【Silverlight】Bing Maps学习系列(八):使用Bing Maps Silverlight Control加载自己部署的Google Maps

【Silverlight】Bing Maps学习系列(八):使用Bing Maps Silverlight Control加载自己部署的Google Maps,第1张

概述上个月微软必应地图(Bing Maps)大中华区业务拓展经理 acnchen发布了一篇 《在必应地图SilverLight控件中加载其他地图(Google卫星图等)》的文章,里面详细介绍了如何实现加载Google卫星地图。本文要介绍的内容和这篇文章差不多,Bing Maps Silverlight Control除了可以加载外网的Google卫星地图,同样也是可以加载自定义的Google Maps 上个月微软必应地图(Bing Maps)大中华区业务拓展经理 acnchen发布了一篇 《在必应地图SilverLight控件中加载其他地图(Google卫星图等)》的文章,里面详细介绍了如何实现加载Google卫星地图。本文要介绍的内容和这篇文章差不多,Bing Maps Silverlight Control除了可以加载外网的Google卫星地图,同样也是可以加载自定义的Google Maps地图数据的,包括卫星地图和路况地图。

  首先回顾下Bing Maps Silverlight Control是如何加载Google卫星地图,其原理就是为Google卫星地图定制一个TileSource,在这个TileSource里实现加载Google卫星地图的算法,主要就是构造正确的TileSource映射Url,此Url的格式可以通过httpWatch等http嗅探器工具抓取分析得到。

 

1 publicclass GoogleTileSource : TileSource
2 {
3     public GoogleTileSource()
4         : base("http://khm{0}.Google.com/kh/v=47&x={1}&y={2}&z={3}")
5     { }
6
7     public overrIDe Uri GetUri(int x,int y,int zoomLevel)
8     {
9         return new Uri(string.Format(this.UriFormat,x % 4,x,y,zoomLevel));
10     }
11 }

如上完成了对Google在线卫星地图数据的Url算法,在前端使用该TileSource就OK了。

1 publicpartial class MainPage : UserControl
2 {
3     public MainPage()
4     {
5         InitializeComponent();
6
7 MapTileLayer tileLayer= new MapTileLayer();
8         GoogleTileSource gts= new GoogleTileSource();
9         tileLayer.TileSources.Add(gts);
10         myMap.Children.Add(tileLayer);
11         this.myMap.Mode = new MercatorMode();
12     }
13 }

如上便实现了加载Google在线卫星地图,虽然实现了功能但是还是不够完美,如果我们没有联网就无法加载地图,这就需要我们自己部署地图数据,那如何实现加载自定义部署的地图数据呢?Google地图数据其实很简单,部署地图数据同样简单,只需要将地图数据通过Web服务器(如:IIS)部署好就行了。

地图数据部署完备,接下来就可以基于自己部署的地图数据开发TileSource的Url映射算法,然后同加载Google在线地图数据一样的方式将自己部署的地图数据加载并呈现出来。修改上面加载在线地图数据的算法,让其适应于加载自己部署的Google Maps数据。

1 public class GoogleTileSource : TileSource
2 {
3     public GoogleTileSource()
4         : base("http://localhost:5000/CQ_{0}/{1}-{2}.png")
5     { }
6
7     public overrIDe Uri GetUri(int x, int zoomLevel)
8     {
9         int port = Application.Current.Host.source.Port;
10
11         string url = string.Format(this.UriFormat,(zoomLevel + 1).ToString("D2"),(y + 1).ToString("D6"),(x + 1).ToString("D6"),port);
12         return new Uri(url);
13     }

  再次编译运行上面的程序,可以看到已经成功的将自己部署的Google Maps数据加载并呈现出来了,爽~~~~~~。有了Google地图数据,自己部署就不用担心没有联网造成不能加载地图的麻烦了。

总结

以上是内存溢出为你收集整理的【Silverlight】Bing Maps学习系列(八):使用Bing Maps Silverlight Control加载自己部署的Google Maps全部内容,希望文章能够帮你解决【Silverlight】Bing Maps学习系列(八):使用Bing Maps Silverlight Control加载自己部署的Google Maps所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1066424.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-26
下一篇 2022-05-26

发表评论

登录后才能评论

评论列表(0条)

保存