GMap.Net中使用高德地图

GMap.Net是.Net下一个地图控件,可以基于Http协议加载各个公司的地图,如Google,Bing,ArcGIS的,主要原理是通过解析各个公司的地图服务的URL,传入相应的参数得到对应的切片底图(Tiled map),如一个高德地图的GMapProvider的实现如下:

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

时间: 2024-08-05 17:02:42

GMap.Net中使用高德地图的相关文章

在第三方应用中打开高德地图的特色功能页面

由于最近的项目中需要在第三方应用中直接打开高德地图的电子狗页面,在高德开发者论坛找了一遍无果之后,只能自己反编译高德地图来找了,现在记录下来方便大家有类似需求时可以直接找到,这样就不需要反编译了. 高德地图有一些非常方便的特色功能,我们可以直接在第三方应用中打开高德地图的这些特色功能页面方便大家使用,前提是手机上必须要安装高德地图. 首先反编译高德地图的APK得到AndroidMainfest.xml文件: <?xml version="1.0" encoding="u

C# GMap下提供一个高德地图

using System; using GMap.NET.Internals; using GMap.NET.Projections; namespace GMap.NET.MapProviders { public class AMapProvider : AMapProviderBase { private readonly string name = "AMap"; private readonly string language = "zh_cn"; pri

vue 中使用高德地图, 地图选点

功能简述: 网页版高德地图开发,主要支持地图选点(没做导航),搜索选点.(功能类似微信与好友聊天中的选择位置,发送位置,如下图) 第一步:先成为高德地图的开发者(获取高德地图的key);获取key 第二步:引入高德地图js文件 <!-- 高德地图 --> <script src="https://webapi.amap.com/maps?v=1.4.14&key=你申请到高德地图开发者key&plugin=AMap.Driving"></s

vue-cli2.X中引入高德地图,将其设为全局对象

平时一般未用脚手架构建或用webpack构建的项目只要用script标签引入即可,在vue-cli 2.X构建的项目中,需要用如下方式引入高德地图: 首先在高德地图开放平台中注册开发者账号并获取key,传送门:https://lbs.amap.com/api/javascript-api/guide/abc/prepare 接下来在cli项目根目录下的index.html中的<header>标签中用script标签引入 <script type="text/javascript

vue中使用高德地图

1.安装 cnpm install vue-amap --save 2.main.js 中引入 import VueAMap from 'vue-amap' Vue.use(VueAMap) VueAMap.initAMapApiLoader({ key: '3ebdb3c7a684a4e64f39ddd306056522', plugin: ['AMap.Scale', 'AMap.OverView', 'AMap.ToolBar', 'AMap.MapType', 'AMap.PlaceSe

在flutter中使用高德地图

1. 配置Android原生文件,在如下文件中的application中添加如下内容        2. 配置高德地图的sha1 2.1在Android studio中打开原生Android窗口 2.2. 找到sha1:双击signingReport即可获取 2.3 原文地址:https://www.cnblogs.com/xhrr/p/11420148.html

在vue中使用高德地图vue-amap

1.安装 vue-amap我安装指定版本0.5.10的版本 npm i --save [email protected] 2.main.js中的配置 key申请地址教程:https://lbs.amap.com/api/javascript-api/guide/abc/prepare // 高德离线地图 import VueAMap from 'vue-amap'; Vue.use(VueAMap); VueAMap.initAMapApiLoader({ // 高德key key: 'd6ea

js中实现高德地图坐标经纬度转百度地图坐标

1 function tobdMap(x, y) { 2 var x_pi = 3.14159265358979324 * 3000.0 / 180.0; 3 var z = Math.sqrt(x * x + y * y) + 0.00002 * Math.sin(y * x_pi); 4 var theta = Math.atan2(y, x) + 0.000003 * Math.cos(x * x_pi); 5 var bd_lon = z * Math.cos(theta) + 0.00

【Android笔记】Fragment中显示高德地图

本文来自:fair-jm.iteye.com 转截请注明出处 官网的教程是在Activity下 在Fragment下在高德论坛找到一些方法 试了下可以显示 但是切换后总会有些问题 比如切换后就是新的了 切换后地图就不显示了 我这种方式可以在切换后保持地图状态 但是得限定屏幕为水平或者竖直 如果翻转的话也会报错 布局文件: 1 <?xml version="1.0" encoding="utf-8"?> 2 <RelativeLayout xmlns