之前写了篇博文,深入理解最强桌面地图控件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改成下面的代码即可

using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Globalization;
using System.Text;
using System.Xml;
using GMap.NET.Internals;
using GMap.NET.MapProviders;
using GMap.NET.Projections; namespace GMap.NET.GMap.NET.MapProviders.Baidu
{
public abstract class BaiduMapProviderBase : GMapProvider
{
private string ClientKey = "1308e84a0e8a1fc2115263a4b3cf87f1";
public BaiduMapProviderBase()
{
MaxZoom = null;
RefererUrl = "http://map.baidu.com";
Copyright = string.Format("©{0} Baidu Corporation, ©{0} NAVTEQ, ©{0} Image courtesy of NASA", DateTime.Today.Year);
} public override PureProjection Projection
{
get { return MercatorProjection.Instance; }
} GMapProvider[] overlays;
public override GMapProvider[] Overlays
{
get
{
if (overlays == null)
{
overlays = new GMapProvider[] { this };
}
return overlays;
}
}
} public class BaiduMapProvider : BaiduMapProviderBase
{
public static readonly BaiduMapProvider Instance; readonly Guid id = new Guid("608748FC-5FDD-4d3a-9027-356F24A755E5");
public override Guid Id
{
get { return id; }
} readonly string name = "BaiduMap";
public override string Name
{
get
{
return name;
}
} static BaiduMapProvider()
{
Instance = new BaiduMapProvider();
} public override PureImage GetTileImage(GPoint pos, int zoom)
{
string url = MakeTileImageUrl(pos, zoom, LanguageStr); return GetTileImageUsingHttp(url);
} string MakeTileImageUrl(GPoint pos, int zoom, string language)
{
zoom = zoom - ;
var offsetX = Math.Pow(, zoom);
var offsetY = offsetX - ; var numX = pos.X - offsetX;
var numY = -pos.Y + offsetY; zoom = zoom + ;
var num = (pos.X + pos.Y)% + ;
var x = numX.ToString().Replace("-", "M");
var y = numY.ToString().Replace("-", "M"); //原来: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
string url = string.Format(UrlFormat, x, y, zoom);
Console.WriteLine("url:" + url);
return url;
} static readonly string UrlFormat = "http://online1.map.bdimg.com/tile/?qt=tile&x={0}&y={1}&z={2}&styles=pl"; }
}

最新文章

  1. 基本排序算法——选择排序java实现
  2. oracle 递归应用(挺复杂的)
  3. FFmpeg-20160415-snapshot-bin
  4. windows下nginx+php简单配置
  5. ASP.NET MVC开发必看系列
  6. Shell脚本运行hive语句 | hive以日期建立分区表 | linux schedule程序 | sed替换文件字符串 | shell推断hdfs文件文件夹是否存在
  7. Java和C++的对比
  8. Oracle trunc()函数的用法--来着心静禅定ing
  9. js在数组arr中随机获取count数量的元素
  10. AD、PADS、Cadence对比
  11. ffmpeg使用示例
  12. Qt 学习-----helloword
  13. 4.数码相框-freetype多行显示,居中显示
  14. 安装EF实体模型框架
  15. 通过创建临时表合并某一个库的hive小文件
  16. 简单选择排序(js版)
  17. 6.关键字static
  18. 排错-windows平台下访问oracle em出现空白的解决方法
  19. RESTful Java client with Apache HttpClient / URL /Jersey client
  20. 02-python基本数据类型

热门文章

  1. php.ini文件中的include_path设置
  2. Strem String Memory TStringStream
  3. url_encode and url_decode in Shell
  4. Java开发WebService实例(1)
  5. Python常见字符串处理操作
  6. quartz简介
  7. go grpc
  8. 软件工程第二次作业(Android Studio利用Junit进行单元测试)
  9. python's descriptor
  10. SQL的3个主要组成