文章目录

  • 前言
  • 一、Nuget下载Gmap
  • 二、代码
    • 1.添加类
    • 2.加载高德地图
  • 总结

前言

近日在项目中用到了GMap,并且Gmap中使用了高德地图,特此记录一下。


一、Nuget下载Gmap

在Nuget中搜索GMap,选择GMap.NET.Presentatiom进行下载安装。(请注意版本)

二、代码

1.添加类

添加一个类,让其GMapControl类。
代码如下:

using GMap.NET;
using GMap.NET.MapProviders;
using GMap.NET.Projections;
using GMap.NET.WindowsPresentation;
using System;namespace WpfRiUi.gmap
{public class MapControl : GMapControl {public long ElapsedMilliseconds;}
}

2.加载高德地图

  1. 如果使用高德地图,需要实现GMapProvider接口,并添加一些方法
public abstract class AMapProviderBase : GMapProvider{public AMapProviderBase() {MaxZoom = null;RefererUrl = "https://www.amap.com/";}public override PureProjection Projection { get { return MercatorProjection.Instance; }}GMapProvider[] overlays;public override GMapProvider[] Overlays {get {if (overlays == null) { overlays = new GMapProvider[] { this };}return overlays;}}}
  1. 实现AMapProviderBase
using GMap.NET;
using GMap.NET.MapProviders;
using GMap.NET.Projections;
using GMap.NET.WindowsPresentation;
using System;namespace WpfRiUi.gmap
{public class MapControl : GMapControl {public long ElapsedMilliseconds;}public abstract class AMapProviderBase : GMapProvider{public AMapProviderBase() {MaxZoom = null;RefererUrl = "https://www.amap.com/";}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){string url = MakeTileImageUrl(pos, zoom, LanguageStr);return GetTileImageUsingHttp(url);}string MakeTileImageUrl(GPoint pos, int zoom, string language){//string url = string.Format(UrlFormat, num, pos.X, pos.Y, zoom);string url = string.Format(UrlFormat, pos.X, pos.Y, zoom);Console.WriteLine("url:" + url);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}";}        }
  1. 在xaml中使用

在window标签中引入xmlns:src=“clr-namespace:WpfRiUi.gmap”,也就前面我们写的类。然后在显示区域加入如下代码。

 <src:MapControl Grid.Row="0" x:Name="MainMap" Zoom="13" MaxZoom="24" MinZoom="1"/>
  1. 在主窗口中加载地图
    首先先写一个地图加载方法
        private void Map_Loaded(){try{System.Net.IPHostEntry e = System.Net.Dns.GetHostEntry("ditu.google.cn");}catch{MainMap.Manager.Mode = AccessMode.CacheOnly;System.Windows.MessageBox.Show("没有可用的internet连接,正在进入缓存模式!", "提示", MessageBoxButton.OK, MessageBoxImage.Warning);}MainMap.CacheLocation = Environment.CurrentDirectory + "\\GMapCache\\"; //缓存位置MainMap.MapProvider = AMapProvider.Instance; //加载高德地图MainMap.MinZoom = 2;  //最小缩放MainMap.MaxZoom = 17; //最大缩放MainMap.Zoom = 8;     //当前缩放MainMap.ShowCenter = false; //不显示中心十字点MainMap.DragButton = MouseButton.Left; //右键拖拽地图MainMap.Position = new PointLatLng(39.909149, 116.397486); //地图中心位置:北京//MainMap.MouseLeftButtonDown += new MouseButtonEventHandler(mapControl_MouseLeftButtonDown);}

然后不要忘了在窗口初始化时调用

 public MainWindow(){InitializeComponent();Rect rc = SystemParameters.WorkArea; //获取工作区大小this.Left = 0; //设置位置this.Top = 0;this.Width = rc.Width;this.Height = rc.Height;this.Map_Loaded();//加载地图}

总结

到此GMap已经可以成功的使用高德地图了,非常好用。如果您发现什么问题,请告诉我,本人万分感谢。

WPF GMap使用高德地图相关推荐

  1. 深入理解最强桌面地图控件GMAP.NET ---高德地图

    前一篇介绍了GMAP.NET的理论基础,这篇介绍如何集成高德地图.高德地图自从为IOS6提供地图后,目前已经被大众所熟知了. 在我集成国内地图的经验来看,也是最符合墨卡托投影法的. 前面的相关文章链接 ...

  2. GMap.net在winform中调用高德地图

    GMap没有自带国内服务商的地图产品接口,需要在项目中创建相关的类才能调用,下面阐述下如何调用高德地图 1.在创建了UserControl(改天专门写写关于UserControl控件的使用)的前提下, ...

  3. 基于GMap.Net的地图解决方案

    一 地图的加载与显示 关于GMap的介绍与使用可以看我以前的文章: GMap.Net开发之在WinForm和WPF中使用GMap.Net地图插件 GMap.Net是.Net下一个地图控件,可以基于Ht ...

  4. android 高德地图移动卡顿_Xamarin.Forms Android使用高德地图SDK

    Xamarin.Forms Android 高德演示https://www.zhihu.com/video/1243224001301958656 介绍 本编文章分为2节,第1节是介绍高德地图SDK与 ...

  5. 关于高德地图崩溃的问题

    高德地图依赖最新包,销毁时闪退问题(Build fingerprint: Build fingerprint: 'OPPO/PEGM00/OP4E8F:11/RKQ1.200903.002/16475 ...

  6. 深入理解最强桌面地图控件GMAP.NET --- SOSO地图

    转 http://www.cnblogs.com/enjoyeclipse/archive/2013/01/15/2859028.html 前三篇介绍了GMAP.NET的一些基本功能以及如何集成一个百 ...

  7. (转)深入理解最强桌面地图控件GMAP.NET --- SOSO地图

    前三篇介绍了GMAP.NET的一些基本功能以及如何集成一个百度地图. 深入理解最强桌面地图控件GMAP.NET --- 初识 深入理解最强桌面地图控件GMAP.NET --- 初用 深入理解最强桌面地 ...

  8. gmap 支持python吗_基于GMap.Net的地图解决方案

    一 地图的加载与显示 关于GMap的介绍与使用可以看我以前的文章: GMap.Net是.Net下一个地图控件,可以基于Http协议加载各个公司的地图,如Google,Bing,ArcGIS的,主要原理 ...

  9. Android 高德地图升级9.2.0版本问题

    gradle 文件升级版本: //高德地图 api 'com.amap.api:3dmap:9.2.0' //高德地图定位 implementation 'com.amap.api:location: ...

最新文章

  1. JS复制内容到剪贴板
  2. 静止的单摄像机无法得到像点的三维坐标详解
  3. python--装饰器、生成器、迭代器、元类
  4. 普通程序员,如何转型大数据相关方向?
  5. 计算机字处理软件word文档,2012计算机字处理软件 Word(answer)
  6. WSL2 下的 Docker 配置,使用网易云镜像 + 更改 docker 文件系统(否则无法 apt update)
  7. 蓝牙通信-打开和关闭蓝牙设备
  8. windows下游戏服务器端框架Firefly安装说明及demo运行
  9. 离散ziggurat算法python实现_SLAM的数学基础(3):几种常见的概率分布的实现及验证。...
  10. 平面与空间射影几何小结——空间射影几何
  11. shiro.crypto.CryptoException: Unable to correctly extract the Initialization Vector or ciphertext
  12. 关于OSPF区域划分
  13. Mooc微信小程序学习笔记+作业经验分享
  14. IPv6 NDP——邻居发现协议
  15. SQL xin手错误鉴赏以及成长小结
  16. 个人英文小词典--抽取英文阅读重要的名词、动词、形容词、副词并输出其翻译结果
  17. Win10无法识别移动硬盘的解决方案
  18. python数字转大写字母_python变量名称如何转化为大写字母?
  19. 计算机休眠不播放音乐,电脑没有声音了播放音乐进度条还不会动是怎么回事求...
  20. mmdetection3d简单安装(官方教程就是坑)

热门文章

  1. 杀戮间插件入坑指南(UT2004)
  2. 2020年雅思机考考点将覆盖全国14城
  3. 网络蠕虫是计算机病毒吗,蠕虫病毒属于文件型病毒吗
  4. latex左侧大括号 latex中大括号多行公式
  5. 输入年份和月份,求该月有多少天
  6. zk-snark之R1CS-QAP
  7. Ps导航栏的简略讲解(一)
  8. 2020.10.24--AI--波纹便签、字体设计、徽章制作
  9. [日推荐] 『Streeter』极乐商店邀你一起来尬舞啊!-store.dreawer.com
  10. 杨氏不等式(控制中的应用)