之前写了篇博文,深入理解最强桌面地图控件GMAP.NET --- 百度地图

但是很多回复说百度地图更新了,不能显示百度的离线地图。之前承诺说是国庆节更新,最近才更新。代码已经提交到:

https://code.google.com/p/ypmap/

其实算法都是一样的,只是链接变了,

//原来:http://q3.baidu.com/it/u=x=721;y=209;z=12;v=014;type=web&fm=44
//更新:http://online1.map.bdimg.com/tile/?qt=tile&x=23144&y=6686&z=17&styles=pl

因此只要将BaiduMapProviderBase改成下面的代码即可

  1. using System;
  2. using System.Collections.Generic;
  3. using System.Diagnostics;
  4. using System.Globalization;
  5. using System.Text;
  6. using System.Xml;
  7. using GMap.NET.Internals;
  8. using GMap.NET.MapProviders;
  9. using GMap.NET.Projections;
  10.  
  11. namespace GMap.NET.GMap.NET.MapProviders.Baidu
  12. {
  13. public abstract class BaiduMapProviderBase : GMapProvider
  14. {
  15. private string ClientKey = "1308e84a0e8a1fc2115263a4b3cf87f1";
  16. public BaiduMapProviderBase()
  17. {
  18. MaxZoom = null;
  19. RefererUrl = "http://map.baidu.com";
  20. Copyright = string.Format("©{0} Baidu Corporation, ©{0} NAVTEQ, ©{0} Image courtesy of NASA", DateTime.Today.Year);
  21. }
  22.  
  23. public override PureProjection Projection
  24. {
  25. get { return MercatorProjection.Instance; }
  26. }
  27.  
  28. GMapProvider[] overlays;
  29. public override GMapProvider[] Overlays
  30. {
  31. get
  32. {
  33. if (overlays == null)
  34. {
  35. overlays = new GMapProvider[] { this };
  36. }
  37. return overlays;
  38. }
  39. }
  40. }
  41.  
  42. public class BaiduMapProvider : BaiduMapProviderBase
  43. {
  44. public static readonly BaiduMapProvider Instance;
  45.  
  46. readonly Guid id = new Guid("608748FC-5FDD-4d3a-9027-356F24A755E5");
  47. public override Guid Id
  48. {
  49. get { return id; }
  50. }
  51.  
  52. readonly string name = "BaiduMap";
  53. public override string Name
  54. {
  55. get
  56. {
  57. return name;
  58. }
  59. }
  60.  
  61. static BaiduMapProvider()
  62. {
  63. Instance = new BaiduMapProvider();
  64. }
  65.  
  66. public override PureImage GetTileImage(GPoint pos, int zoom)
  67. {
  68. string url = MakeTileImageUrl(pos, zoom, LanguageStr);
  69.  
  70. return GetTileImageUsingHttp(url);
  71. }
  72.  
  73. string MakeTileImageUrl(GPoint pos, int zoom, string language)
  74. {
  75. zoom = zoom - ;
  76. var offsetX = Math.Pow(, zoom);
  77. var offsetY = offsetX - ;
  78.  
  79. var numX = pos.X - offsetX;
  80. var numY = -pos.Y + offsetY;
  81.  
  82. zoom = zoom + ;
  83. var num = (pos.X + pos.Y)% + ;
  84. var x = numX.ToString().Replace("-", "M");
  85. var y = numY.ToString().Replace("-", "M");
  86.  
  87. //原来:http://q3.baidu.com/it/u=x=721;y=209;z=12;v=014;type=web&fm=44
  88. //更新:http://online1.map.bdimg.com/tile/?qt=tile&x=23144&y=6686&z=17&styles=pl
  89. string url = string.Format(UrlFormat, x, y, zoom);
  90. Console.WriteLine("url:" + url);
  91. return url;
  92. }
  93.  
  94. static readonly string UrlFormat = "http://online1.map.bdimg.com/tile/?qt=tile&x={0}&y={1}&z={2}&styles=pl";
  95.  
  96. }
  97. }

深入理解最强桌面地图控件GMAP.NET ---[更新]百度地图的更多相关文章

  1. 深入理解最强桌面地图控件GMAP.NET ---离线地图

    enjoyeclipse 深入理解最强桌面地图控件GMAP.NET ---离线地图 这章会介绍GMAP.NET的核心功能之一:离线地图.这个功能可以满足很多政府项目.保密项目.或者由于种种原因不能上网 ...

  2. (转)深入理解最强桌面地图控件GMAP.NET --- 百度地图

    原文地址:http://www.cnblogs.com/enjoyeclipse/archive/2013/01/14/2859026.html 前两篇介绍了GMAP.NET的一些基本功能和如何在自己 ...

  3. 深入理解最强桌面地图控件GMAP.NET --- 街景地图(StreetView)

    原文:深入理解最强桌面地图控件GMAP.NET --- 街景地图(StreetView) 很久没有更新博客了,今天无事把GMAP.NET的代码又重新翻了翻,看到了街景地图的例子. 街景地图是谷歌最早提 ...

  4. 微信小程序地图控件篇 ---自定义图标被地图覆盖的问题

    今天在做微信小程序的时候遇到这个这样的问题  需要在地图上加个一个自定义的图标控件 类似这样的 刚开始的时候怎图片一直会被地图组件覆盖  ,要怎么解决这个问题  我去翻了下小程序的文档 有个cover ...

  5. C++ 写的地图控件,支持google 百度 在线离线地图

    C++处理google  百度地图在网上查阅了很多都是通过浏览器方式显示地图信息, 跟我目前项目很不符合, 所以仔细研究了一下C++方式显示地图.通过地图投影以及墨卡托投影,在通过平面地图计算经纬度. ...

  6. ArcGIS for Android地图控件的5大常见操作

    GIS的开发中,什么时候都少不了地图操作.ArcGIS for Android中,地图组件就是MapView,MapView是基于Android中ViewGroup的一个类(参考),也是ArcGIS ...

  7. Google地图接口API之地图控件集(五)

    1.默认控件集 当使用一个标准的google地图,它的控件默认设置如下: (1). Zoom-显示一个滑动条来控制map的Zoom级别,如下所示:

  8. Corelocation及地图控件学习笔记

    Corelocation基本使用 在地图章节的学习中,首先要学的便是用户位置定位,因此我们首先要掌握Corelocation的使用.(在IOS8以前可以系统会直接请求授权,现在需要我们自己调用方式通知 ...

  9. 使用XAML在WPF项目中承载ArcGIS Engine地图控件开发

    原文 http://blog.csdn.net/flexmapserver/article/details/5868882 用Windows Form进行ArcGIS Engine二次开发时常见的形式 ...

随机推荐

  1. centos 安装php7

    yum安装php7 删除之前的版本 # yum remove php* rpm 安装 Php7 相应的 yum源 CentOS/RHEL 7.x: # rpm -Uvh https://dl.fedo ...

  2. 「小程序JAVA实战」小程序视图之细说wx:key列表高级特性(16)

    转自:https://idig8.com/2018/08/09/xiaochengxu-chuji-16/ wx:key的高级特性.这个很重要,因为在app上经常有上拉,下拉加载,我们如果不使用这个特 ...

  3. Eclipse debug 的 drop to frame 的技巧

    前些天和同事交流调试技巧时,知道了 Eclipse debug 时有个 drop to frame 的技巧.这是我以前不知道的,自己又查了一下这个功能的含义.官方的解释是: Select the Dr ...

  4. 【305】◀▶ ArcPy 相关功能实现

    目录: 1. 同一图层的多个要素合并(2种方法) 2. 导入带经纬度坐标的 txt 文件 3. 栅格计算器的实现 4. 添加 shp 文件(显示在 ArcMap) 5. 通过经纬度坐标生成 Polyg ...

  5. Proxmox 安装 dsm 黑群 备忘

    备忘:Proxmox 虚拟机使用 E1000网卡(用Virlo找不到引导),直通数据硬盘 .     使用的引导文件是 DS918+_6.21-23824-1.04b.img 虚拟机启动使用第三项EX ...

  6. Reducing File Size

    [Reducing File Size] 1.Unity strips out unused assets. The amount of assets in your project folder d ...

  7. cdoj913-握手 【Havel定理】

    http://acm.uestc.edu.cn/#/problem/show/913 握手 Time Limit: 2000/1000MS (Java/Others)     Memory Limit ...

  8. CentOS安装配置Tomcat-7

    安装环境:CentOS-6.5安装方式:源码安装软件:apache-tomcat-7.0.29.tar.gz下载地址:http://tomcat.apache.org/download-70.cgi ...

  9. c/c++笔试面试试题

    C 试题(纯属转载) 1.求下面函数的返回值(微软) int func(x) {     int countx = 0;     while(x)     {           countx ++; ...

  10. jQuery中deferred对象的使用(二)

    接上一回的内容,漏了一个always()方法,参数也是回调函数,与done和fail不同的是,无论任何情况都执行always方法中的回调. deferred对象的使用(二) deferred对象不光可 ...