如何在WindowsPhone Bing Map控件中显示必应中国中文地图、谷歌中国中文地图。
原文:如何在WindowsPhone Bing Map控件中显示必应中国中文地图、谷歌中国中文地图。
最近正好有点业余时间,所以在做做各种地图。Bing Map控件本身就能显示必应地图,但是很遗憾微软在Bing Map控件中只提供两种地图模式:全球道路地图RoadMode、全球卫星地图AerialMode,卫星地图对咱们这些个凡人是没啥用的,全球道路地图又不显示天朝地图,因为咱们伟大的天朝政府要求在天朝内发布的地图都要加上随机偏移量才能发布。所以每个国际电子地图提供商(谷歌、微软、高德等等)都会有两类地图:全球地图和中国地图。微软BingMap控件内置没有提供中国地图,所以如果在BingMap控件里移动地图到天朝区域,除了能显示城市名之外,一片空白。。。怎么办呢?
解决方法前提:微软的BingMap控件显示地图的原理是类似网页div标签的层,我们在上面看到的地图其实就是一个层,你要在上面叠上几个层都可以。咱们只要把原先显示全球地图的那个层替换成显示中国地图的层就可以了。
显示必应中国地图代码如下:
//必应中文道路地图
public class BingChinaRoadMode : MercatorMode
{
//这个类见名知意:就是层嘛。
MapTileLayer layer = new MapTileLayer(); public override UIElement Content
{
get
{
return layer;
}
} public BingChinaRoadMode()
{
layer.TileSources.Add(new BingChinaRoadTileSource());
} //类中类
//必应中文地图的TitleSource
private class BingChinaRoadTileSource : TileSource
{
public BingChinaRoadTileSource()
: base("http://r2.tiles.ditu.live.com/tiles/r{quadkey}.png?g=4") //指定BingMap控件从网络上获取的中国地图图片来源url地址,注:此url可以从网页版必应中国地图的Http请求得到。
{ }
}
}
//指定BingMap控件的地图模式为咱们自定义的 BingChinaRoadMode
BingMap.Mode = new BingChinaRoadMode();
然后BingMap控件就显示必应中国地图啦。
二:
好吧,送佛送到西,显示谷歌地图的代码如下:
//谷歌中文道路地图
public class GoogleChinaRoadMode : MercatorMode
{
MapTileLayer layer = new MapTileLayer(); public override UIElement Content
{
get
{
return layer;
}
} public GoogleChinaRoadMode()
{
layer.TileSources.Add(new GoogleChinaRoadTileSource());
} //谷歌道路地图TitleSource
private class GoogleChinaRoadTileSource : TileSource
{
public GoogleChinaRoadTileSource()
: base("http://mt{0}.google.com/vt/lyrs=m@128&hl=zh&x={1}&y={2}&z={3}&s=")
{ } public override System.Uri GetUri(int x, int y, int zoomLevel)
{
return new System.Uri(string.Format(UriFormat, new System.Random().Next() % , x, y, zoomLevel));
}
}
}
完了,那是不是也可以在BingMap控件中显示:百度地图,说对了,前途是光明的、道路是曲折的。下一篇讲如何显示百度地图,这个就不像显示必应中国地图和谷歌地图那么简单了。
如何在WindowsPhone Bing Map控件中显示必应中国中文地图、谷歌中国中文地图。的更多相关文章
- C#在splitContainer1控件和panel控件中显示窗体
现在有两个窗体 Form1 和Form2 Form1中有控件splitContainer1 和panel .控件.我们希望Form2在splitContainer1或者panel控件中显示 1:首先看 ...
- CheckedListBoxControl 或CheckedListBox 控件中显示水平滚动条 z
public partial class Form1 : Form { public Form1() { InitializeComponent(); DisplayHScroll(); } /// ...
- 在RichTextBox控件中显示RTF格式文件
实现效果: 知识运用: RichTextBox控件的LoadFile方法 //将文件内容加载到RichTextBox控件中 public void LoadFile(string path,Ri ...
- C#在listview控件中显示数据库数据
一.了解listview控件的属性 view:设置为details columns:设置列 items:设置行 1.将listview的view设置为details 2.设置列属性 点击添加,添加一列 ...
- arcgis api for flex 除去 esri map控件中的logo标志
在程序的applicationComplete方法中添加下列代码 private function reallyHideESRILogo(map : Map) : void { for(var i : ...
- [c#]如何在form的webbrowser控件中获得鼠标坐标
如图这样,其实是要插入一个time的控件,这样才能使得坐标值会根据鼠标的移动而不停变化.time插件中写private void timer1_Tick(object sender, EventArg ...
- CListCtrl控件中显示进度条
CListCtrl控件的subitem中显示进度条 http://www.codeproject.com/Articles/6813/List-Control-Extended-for-Progres ...
- 在ProgressBar控件中显示进度百分比
实现效果: 知识运用: ProgressBar控件的Value属性 //控件的当前值 Maximum属性 //ProgressBar正在使用的范围的上限 PerformStep方法 //按照Step属 ...
- 在DataGridView控件中显示图片
实现效果: 知识运用: DataGridView控件的DataSource属性 实现代码: private void Form1_Load(object sender, EventArgs e) { ...
随机推荐
- Python中列表的常用操作
只整理重要常用的操作: append():尾部追加元素,参数只能为一个. extend():用列表扩展列表,参数为列表. insert():在指定位置插入元素,第一个参数为插入位置,第二个为参数为插入 ...
- S3C6410 纯粹的裸机启动,自己写的SD BOOT启动
这几天晚上一直折腾S3C6410的裸机SD卡启动,不大想使用UBOOT,我是搞硬件的,对底层非常感兴趣,不喜欢已经写好的,因此自己一直在尝试,其实很早之前就试过SD卡启动,也就是ARM11上电后会把S ...
- Windows的自带控件(比如TButton)大多数消息都由它自己处理,Delphi覆盖了那么多WM_函数优先级较低,一般用不上
在空窗体上放一个TButton,一个TPanel,然后把在TWinControl.WMEraseBkgnd里下断点: procedure TWinControl.WMEraseBkgnd(var Me ...
- vc 加载bmp位图并显示的方法
方法一.显示位图文件 HBITMAP hBitmap=(HBITMAP)LoadImage(NULL,_T(“xxx.bmp”),Image_Bitmap,0,0,Lr_CreateDibSectio ...
- 可运行jar包调用exe可运行文件,子进程阻塞
背景: 须要在项目的測试工具中加入一个button,点击后直接打开某exe工具. 这个工具的功能是导入txt文件,转为excel报表输出. 无奈解析了两行之后就停止不动了,也不报错.关闭測试工具后,就 ...
- Android中日志信息的打印方式
Android中日志信息的打印方式主要有以下7种: 1)System.out(i级别) 2)System.err(w级别) 3)Log.v 4)Log.d 5)Log.i 6)Log.w 7)Log. ...
- [C#基础] 继承
虚方法和覆写方法 虚方法可以使基类的引用访问"升至"派生类中 可以使用基类引用调用派生类的方法,只需满足下面的条件 派生类的方法和基类的方法有相同的签名和返回类型 基类的方法使用v ...
- 如何利用Win32API取得另一支程式中的ListView內的所有值(RegisterHotKey,ReadProcessMemory,WindowFromPoint和VirtualAllocEx)
http://blog.csdn.net/shuaihj/article/details/6129506
- 关于Thread类中三个interrupt方法的研究与学习(转)
先看三个方法原型: public void interrupt(): public boolean isInterrupted(): public static boolean interrupted ...
- CentOS下yum使用代理的设置
export后好像没用? 问题描述: CentOS yum时出现“Could not retrieve mirrorlist http://mirrorlist.centos.org/?release ...