WPF编程--地图控件GMap使用
目录
编辑
1.环境
2. NuGet导入依赖
3. 添加MapControl类
4. 编辑MainView.xaml.cs
5. 编辑MainView.xaml
6. 启动验证
源码: https://github.com/liugang198409/WpfDemo/tree/master/GMapDemo
视频:WPF编程--地图控件GMap_哔哩哔哩_bilibili
1.环境
VVisual Studio 2019 + .NET Framework 4.8.1
2. NuGet导入依赖
导入依赖GMap.NET.Presentation
3. 添加MapControl类
using GMap.NET;
using GMap.NET.MapProviders;
using GMap.NET.Projections;
using GMap.NET.WindowsPresentation;
using System;namespace GMapDemo
{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}";} }
4. 编辑MainView.xaml.cs
using GMap.NET;
using System;
using System.Windows;
using System.Windows.Input;namespace GMapDemo
{/// <summary>/// MainWindow.xaml 的交互逻辑/// </summary>public partial class MainWindow : Window{public MainWindow(){InitializeComponent();Rect rc = SystemParameters.WorkArea; //获取工作区大小this.Left = 0; //设置位置this.Top = 0;this.Width = rc.Width;this.Height = rc.Height;this.Map_Loaded();//加载地图}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);}}
}
5. 编辑MainView.xaml
<Window x:Class="GMapDemo.MainWindow"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"xmlns:d="http://schemas.microsoft.com/expression/blend/2008"xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"xmlns:src="clr-namespace:GMapDemo"xmlns:local="clr-namespace:GMapDemo"mc:Ignorable="d"Title="MainWindow" Height="450" Width="800"><Grid><src:MapControl Grid.Row="0" x:Name="MainMap" Zoom="13" MaxZoom="24" MinZoom="1"/></Grid>
</Window>
6. 启动验证
WPF编程--地图控件GMap使用相关推荐
- 深入理解最强桌面地图控件GMAP.NET --- 百度地图
转 http://www.cnblogs.com/enjoyeclipse/archive/2013/01/14/2859026.html 前两篇介绍了GMAP.NET的一些基本功能和如何在自己的项目 ...
- (转)深入理解最强桌面地图控件GMAP.NET --- 原理篇
前几篇介绍了一些国内地图的案例, 深入理解最强桌面地图控件GMAP.NET --- SOSO地图 深入理解最强桌面地图控件GMAP.NET --- 百度地图 我们以Google地图为例,这章介绍下地图 ...
- 深入理解最强桌面地图控件GMAP.NET --- SOSO地图
转 http://www.cnblogs.com/enjoyeclipse/archive/2013/01/15/2859028.html 前三篇介绍了GMAP.NET的一些基本功能以及如何集成一个百 ...
- (转)深入理解最强桌面地图控件GMAP.NET --- SOSO地图
前三篇介绍了GMAP.NET的一些基本功能以及如何集成一个百度地图. 深入理解最强桌面地图控件GMAP.NET --- 初识 深入理解最强桌面地图控件GMAP.NET --- 初用 深入理解最强桌面地 ...
- 深入理解最强桌面地图控件GMAP.NET --- 原理篇
转 http://www.cnblogs.com/enjoyeclipse/archive/2013/01/18/2865700.html 前几篇介绍了一些国内地图的案例, 深入理解最强桌面地图控件G ...
- 深入理解最强桌面地图控件GMAP.NET ---高德地图
前一篇介绍了GMAP.NET的理论基础,这篇介绍如何集成高德地图.高德地图自从为IOS6提供地图后,目前已经被大众所熟知了. 在我集成国内地图的经验来看,也是最符合墨卡托投影法的. 前面的相关文章链接 ...
- (转)深入理解最强桌面地图控件GMAP.NET ---离线地图
这章会介绍GMAP.NET的核心功能之一:离线地图.这个功能可以满足很多政府项目.保密项目.或者由于种种原因不能上网的项目的需求. 本章主要分成三个方面介绍:演示.生成离线地图.Demo代码. 一.演 ...
- 深入理解最强桌面地图控件GMAP.NET ---离线地图
转 http://www.cnblogs.com/enjoyeclipse/archive/2013/01/29/2882254.html 这章会介绍GMAP.NET的核心功能之一:离线地图.这个功能 ...
- 入理解最强桌面地图控件GMAP.NET ---离线地图
http://www.cnblogs.com/enjoyeclipse/archive/2013/01/31/2882254.html 介绍GMAP.NET的核心功能之一:离线地图.这个功能可以满足很 ...
最新文章
- 不改文件名的情况下上传突破
- 【Paper】2017_水下潜航器编队海洋勘测的协调控制方法研究
- python配置日志的几种方式
- 安装python应该先安装pycharm还是python_Pycharm及python安装详细步骤及PyCharm配置整理(推荐)...
- 在两个静态HTML页面之间传递参数的一个方法
- phpMyAdmin 安装错误解决方法
- 成都python数据分析师职业技能_数据分析师需要什么技能,数据分析行业都有什么职业?...
- 剑指Offer04. 二维数组中的查找
- 操作元素之修改元素属性
- DjVu Reader Pro for Mac(DjVu阅读软件)
- 进行 HTML、JavaScript 和 Ajax 开发和调试的必用工具
- 电脑窗口切换常用的快捷键有哪些
- 两台主机如何共享一套键鼠一台显示器?
- 激活码方式注册的实现原理述
- 美国enom域名的优势
- 前端框架千千万,抓住两条主线成一半
- 计算机二级主要是学什么,计算机二级考试内容是什么
- ucweb7.0 for WM/PPC/SP/S60V1/S60V2/S60V3/S60V5/ 平台安装包下载
- html转盘游戏代码,html5 转盘 例子 附完整源码 有截图 亲测通过
- Linux NFS服务