WinPhone 开发(7)-----通过自定义Mode来加载BingMaps的中文地图

  
  通过Map的Mode属性可以修改地图的显示模式,可以设置为Microsoft.Phone.Controls.Maps命名空间下的AerialMode来显示卫星图,RoadMode显示路线图。虽然AerialMode、 RoadMode 都是英文地名,但是我们可以通过自定义Mode来加载BingMaps的中文TileServer来显示中文地名。

  
  英文RoadMode的TileServer地址为http://t0.tiles.virtualearth.net/tiles/r{QuadKey}.png?g=213,另外中文RoadMode的TileServer为http://r3.tiles.ditu.live.com/tiles/r{QuadKey}.png?g=47

  
  在自己的ChineseMode,ChineseMode中添加自定义的ChineseTileSource层,ChineseTileSource重写父类的GetUri返回自己的Tile地址。最后用自定义Mode来加载地图。

 1 public class ChineseMode : MercatorMode
2 {
3 private readonly MapTileLayer tileLayer;
4
5 public ChineseMode()
6 : base()
7 {
8 tileLayer = new MapTileLayer();
9 tileLayer.TileSources.Add(new ChineseTileSource());
10 }
11
12 public override System.Windows.UIElement Content
13 {
14 get
15 {
16 return tileLayer;
17 }
18 }
19 }

 

 1 public class ChineseTileSource : LocationRectTileSource
2 {
3 public override Uri GetUri(int x, int y, int zoomLevel)
4 {
5 string quadkey = new QuadKey(x, y, zoomLevel).Key;
6
7 string uri = "http://r3.tiles.ditu.live.com/tiles/r"
8 + quadkey + ".png?g=47";
9 return new Uri(uri);
10 }
11 }


  map默认的mode是 Microsoft.Phone.Controls.Maps.RoadMode ,只要将它设定为ChineseMode就行。






虽然还是不太明白原理,但是多态、重写还是能理解的。

Project:http://115.com/file/dpfl5nmg#ChineseBingMap.rar

资料来源:http://dl.dbank.com/c0mo2dkq54  (最后一集)

扩展内容:http://www.cnblogs.com/beniao/archive/2010/01/13/1646446.html





转载于:https://www.cnblogs.com/crazypig/archive/2012/03/17/2403977.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值