博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
深入理解最强桌面地图控件GMAP.NET ---[更新]百度地图
阅读量:6812 次
发布时间:2019-06-26

本文共 3018 字,大约阅读时间需要 10 分钟。

之前写了篇博文,

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

 

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

//原来: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 - 1;            var offsetX = Math.Pow(2, zoom);            var offsetY = offsetX - 1;            var numX = pos.X - offsetX;            var numY = -pos.Y + offsetY;            zoom = zoom + 1;            var num = (pos.X + pos.Y)%8 + 1;            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";            }}

 

转载于:https://www.cnblogs.com/enjoyeclipse/p/3430371.html

你可能感兴趣的文章
C#双缓冲机制
查看>>
12.17 Nginx负载均衡;12.18 ssl原理;12.19 生产ssl密钥对;12.20 N
查看>>
P2P概览与原理解析
查看>>
zabbix监控端口状态
查看>>
php检测函数是否存在函数 function_exists
查看>>
登陆界面上下左右居中自适应屏幕显示的简单实现
查看>>
【解决】Windows Mobile 6 Professional SDK Refresh.msi 在xp上一直卡死
查看>>
RH124 Chapter 2 Managing Files From the Command Line
查看>>
内核里面writel(readl)是如何实现的
查看>>
python--multiprocessing多进程总结
查看>>
tomcat lb cluster
查看>>
小米2系列板砖自救行动
查看>>
登录亿邮网关windows脚本
查看>>
UML 类图
查看>>
研究:窗口映射
查看>>
假回溯-uva140带宽
查看>>
JAVA调用shell脚本利用ansible修改多节点上的redis参数
查看>>
时间复杂度问题
查看>>
工作一年 离职
查看>>
CSS漂亮盒子(上)
查看>>