深入理解最强桌面地图控件GMAP.NET ---[更新]百度地图
之前写了篇博文,深入理解最强桌面地图控件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";
- }
- }
深入理解最强桌面地图控件GMAP.NET ---[更新]百度地图的更多相关文章
- 深入理解最强桌面地图控件GMAP.NET ---离线地图
enjoyeclipse 深入理解最强桌面地图控件GMAP.NET ---离线地图 这章会介绍GMAP.NET的核心功能之一:离线地图.这个功能可以满足很多政府项目.保密项目.或者由于种种原因不能上网 ...
- (转)深入理解最强桌面地图控件GMAP.NET --- 百度地图
原文地址:http://www.cnblogs.com/enjoyeclipse/archive/2013/01/14/2859026.html 前两篇介绍了GMAP.NET的一些基本功能和如何在自己 ...
- 深入理解最强桌面地图控件GMAP.NET --- 街景地图(StreetView)
原文:深入理解最强桌面地图控件GMAP.NET --- 街景地图(StreetView) 很久没有更新博客了,今天无事把GMAP.NET的代码又重新翻了翻,看到了街景地图的例子. 街景地图是谷歌最早提 ...
- 微信小程序地图控件篇 ---自定义图标被地图覆盖的问题
今天在做微信小程序的时候遇到这个这样的问题 需要在地图上加个一个自定义的图标控件 类似这样的 刚开始的时候怎图片一直会被地图组件覆盖 ,要怎么解决这个问题 我去翻了下小程序的文档 有个cover ...
- C++ 写的地图控件,支持google 百度 在线离线地图
C++处理google 百度地图在网上查阅了很多都是通过浏览器方式显示地图信息, 跟我目前项目很不符合, 所以仔细研究了一下C++方式显示地图.通过地图投影以及墨卡托投影,在通过平面地图计算经纬度. ...
- ArcGIS for Android地图控件的5大常见操作
GIS的开发中,什么时候都少不了地图操作.ArcGIS for Android中,地图组件就是MapView,MapView是基于Android中ViewGroup的一个类(参考),也是ArcGIS ...
- Google地图接口API之地图控件集(五)
1.默认控件集 当使用一个标准的google地图,它的控件默认设置如下: (1). Zoom-显示一个滑动条来控制map的Zoom级别,如下所示:
- Corelocation及地图控件学习笔记
Corelocation基本使用 在地图章节的学习中,首先要学的便是用户位置定位,因此我们首先要掌握Corelocation的使用.(在IOS8以前可以系统会直接请求授权,现在需要我们自己调用方式通知 ...
- 使用XAML在WPF项目中承载ArcGIS Engine地图控件开发
原文 http://blog.csdn.net/flexmapserver/article/details/5868882 用Windows Form进行ArcGIS Engine二次开发时常见的形式 ...
随机推荐
- centos 安装php7
yum安装php7 删除之前的版本 # yum remove php* rpm 安装 Php7 相应的 yum源 CentOS/RHEL 7.x: # rpm -Uvh https://dl.fedo ...
- 「小程序JAVA实战」小程序视图之细说wx:key列表高级特性(16)
转自:https://idig8.com/2018/08/09/xiaochengxu-chuji-16/ wx:key的高级特性.这个很重要,因为在app上经常有上拉,下拉加载,我们如果不使用这个特 ...
- Eclipse debug 的 drop to frame 的技巧
前些天和同事交流调试技巧时,知道了 Eclipse debug 时有个 drop to frame 的技巧.这是我以前不知道的,自己又查了一下这个功能的含义.官方的解释是: Select the Dr ...
- 【305】◀▶ ArcPy 相关功能实现
目录: 1. 同一图层的多个要素合并(2种方法) 2. 导入带经纬度坐标的 txt 文件 3. 栅格计算器的实现 4. 添加 shp 文件(显示在 ArcMap) 5. 通过经纬度坐标生成 Polyg ...
- Proxmox 安装 dsm 黑群 备忘
备忘:Proxmox 虚拟机使用 E1000网卡(用Virlo找不到引导),直通数据硬盘 . 使用的引导文件是 DS918+_6.21-23824-1.04b.img 虚拟机启动使用第三项EX ...
- Reducing File Size
[Reducing File Size] 1.Unity strips out unused assets. The amount of assets in your project folder d ...
- cdoj913-握手 【Havel定理】
http://acm.uestc.edu.cn/#/problem/show/913 握手 Time Limit: 2000/1000MS (Java/Others) Memory Limit ...
- CentOS安装配置Tomcat-7
安装环境:CentOS-6.5安装方式:源码安装软件:apache-tomcat-7.0.29.tar.gz下载地址:http://tomcat.apache.org/download-70.cgi ...
- c/c++笔试面试试题
C 试题(纯属转载) 1.求下面函数的返回值(微软) int func(x) { int countx = 0; while(x) { countx ++; ...
- jQuery中deferred对象的使用(二)
接上一回的内容,漏了一个always()方法,参数也是回调函数,与done和fail不同的是,无论任何情况都执行always方法中的回调. deferred对象的使用(二) deferred对象不光可 ...