GMap.Net中使用高德地图
2016-04-21 11:07
1521 查看
GMap.Net是.Net下一个地图控件,可以基于Http协议加载各个公司的地图,如Google,Bing,ArcGIS的,主要原理是通过解析各个公司的地图服务的URL,传入相应的参数得到对应的切片底图(Tiled map),如一个高德地图的GMapProvider的实现如下:
如下为高德地图的显示:
通过类似的办法,可以实现加载Google、腾讯的地图,百度的地图也可以加载,但是因为百度采用自己的加偏算法(BD-09),导致加载的地图显示偏差大,当在不同的地图间切换时,无法正确显示。
引自:http://www.cnblogs.com/luxiaoxun/p/3802559.html
using System; using GMap.NET; using GMap.NET.MapProviders; using GMap.NET.Projections; namespace GMapProvidersExt { public abstract class AMapProviderBase : GMapProvider { public AMapProviderBase() { MaxZoom = null; RefererUrl = "http://www.amap.com/"; //Copyright = string.Format("©{0} 高德 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 AMapProvider : AMapProviderBase { public static readonly AMapProvider Instance; readonly Guid id = new Guid("EF3DD303-3F74-4938-BF40-232D0595EE88"); public override Guid Id { get { return id; } } readonly string name = "AMap"; public override string Name { get { return name; } } static AMapProvider() { Instance = new AMapProvider(); } public override PureImage GetTileImage(GPoint pos, int zoom) { try { string url = MakeTileImageUrl(pos, zoom, LanguageStr); return GetTileImageUsingHttp(url); } catch (Exception ex) { return null; } } string MakeTileImageUrl(GPoint pos, int zoom, string language) { var num = (pos.X + pos.Y) % 4 + 1; //string url = string.Format(UrlFormat, num, pos.X, pos.Y, zoom); string url = string.Format(UrlFormat, pos.X, pos.Y, zoom); return url; } //static readonly string UrlFormat = "http://webrd04.is.autonavi.com/appmaptile?x={0}&y={1}&z={2}&lang=zh_cn&size=1&scale=1&style=7"; static readonly string UrlFormat = "http://webrd01.is.autonavi.com/appmaptile?lang=zh_cn&size=1&scale=1&style=7&x={0}&y={1}&z={2}"; } }
如下为高德地图的显示:
通过类似的办法,可以实现加载Google、腾讯的地图,百度的地图也可以加载,但是因为百度采用自己的加偏算法(BD-09),导致加载的地图显示偏差大,当在不同的地图间切换时,无法正确显示。
引自:http://www.cnblogs.com/luxiaoxun/p/3802559.html
相关文章推荐
- 股票质押式回购交易和约定购回式证券交易的异同是什么?
- NEFU 1151 特殊的质数
- Spring mvc redirect跳转路径问题
- php HttpOnly
- oracle dmp 导出缺表问题
- 在Windows下如何安装Tomcat服务器搭建
- T100中sqlca各个字段的含义
- register_shutdown_function 函数详解
- iOS开发经验总结
- 一个android工程代码多个差异化项目管理方法探讨
- Fedora22下安装nvidia私有显卡驱动
- C语言中的static
- c++第四次实验
- IOS9获取HTML数据报错解决
- Selenium2 Python 自动化测试实战学习笔记(八)
- hive 与mysql 的区别 合并多列
- c++实验4-分数的累加
- MYSQL企业常用架构与调优经验分享
- Android fragment 设置横屏后,锁屏之后重启手机导致奔溃问题
- android studio遇到的问题。