博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
(转)深入理解最强桌面地图控件GMAP.NET --- 初用
阅读量:7089 次
发布时间:2019-06-28

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

上一篇介绍了GMAP.NET的基本概念和一些Demo的截图,这一章主要介绍我们的代码如何使用GMAP.NET。

1.下载

2.编译GMAP.NET工程

3.在项目中引用

我的项目是用的WPF,因此需要引用GMAP.NET Core和GMap.NET.WindowsPresentation两个dll。

4.GMapControl

 1)UserControl.xaml 创建一个UserControl,并在UserControl中引用GMapControl,我设置了MaxZoom和MinZoom, 也是GMAP.NET支持的最大缩放比例尺,如下所示:

5.GMapControl事件

设置事件代码,包括鼠标进入事件MouseEnter, 鼠标右键事件MouseRightButtonDown,鼠标双击事件MouseDoubleClick。

OnTileLoadStart和OnTileLoadComplete这两个事件是这样的:所有地图下载的时候都是讲一张一张图片下载下来拼接而成的,而这里的图片就叫做Tile。所以

OnTileLoadStart就是指每次每张图片开始载入时触发的事件,OnTileLoadComplete就是每次每张图片载入完成后触发的事件。那么就可以在OnTileLoadStart的时候显示

正在加载或进度条之类的,不会让用户感觉死在那儿;而OnTileLoadComplete可以关闭进度条。

public GMapTrack()        {            InitializeComponent();            this.MainMap.MouseEnter += MainMap_MouseEnter;
        this.MainMap.MouseRightButtonDown += new MouseButtonEventHandler(MainMap_MouseRightButtonDown);            this.MainMap.MouseDoubleClick += new MouseButtonEventHandler(MainMap_MouseDoubleClick);
       this.MainMap.OnTileLoadStart += MainMap_OnTileLoadStart;             this.MainMap.OnTileLoadComplete += MainMap_OnTileLoadComplete; this.MainMap.Loaded += new RoutedEventHandler(MainMap_Loaded); }

6.GMapControl Loaded初始化

Position是地图默认启动的中心位置,我这里是从配置文件里面读取的。

Area是指整个地图的区域,可以不填

Mode有三种, CacheOnly(只从缓存中取),ServerAndCache(网络+缓存), ServerOnly(只从网络读)

MapProvider是地图的来源,默认是OpenStreetMap,当然也可以使BingMap, GoogleMap,关于百度,SoSo等国内地图的支持会在后面的章节介绍。

DragButton是指拖动地图时是用鼠标左键还是右键

Zoom是当前地图显示的层级 (1~24)

MinZoom是地图支持最小的层级,MaxZoom是地图支持的最大层级。

this.MainMap.Position = new PointLatLng(double.Parse(ConfigurationManager.AppSettings["defaultLat"]), double.Parse(ConfigurationManager.AppSettings["defaultLng"])); this.MainMap.MapProvider.Area = new RectLatLng(30.981178, 105.351914, 2.765142, 4.120995); this.MainMap.BoundsOfMap = new RectLatLng(30.981178, 105.351914, 2.765142, 4.120995); this.MainMap.Manager.Mode = AccessMode.CacheOnly; this.MainMap.MapProvider = GMapProviders.OpenStreetMap; this.MainMap.DragButton = MouseButton.Left; this.MainMap.Zoom = 13; this.MainMap.MinZoom = 8; this.MainMap.MaxZoom = 24;

 原文链接:http://www.cnblogs.com/enjoyeclipse/archive/2013/01/13/2858590.html

转载于:https://www.cnblogs.com/plRobotics-RD-Center/p/4008895.html

你可能感兴趣的文章
ZeroMQ(java)之Router/Dealer模式
查看>>
Linux下的文件查找命令
查看>>
TCP/IP协议碎碎念
查看>>
django 将表数据通过API展示到页面上
查看>>
linux用户登录检测发送邮件提醒
查看>>
SQL Server FullText解决Like字句性能问题
查看>>
Ceph实验室:第五课:Ceph运维之换盘
查看>>
C++实践参考——复数类中的运算符重载
查看>>
【Spark Summit East 2017】为了乐趣和利润的全球扩张
查看>>
Rss订阅
查看>>
Mac - gdb配置
查看>>
Vuejs——(4)v-if、v-for
查看>>
让Spark成为你的瑞士军刀
查看>>
[LeetCode]--40. Combination Sum II
查看>>
ART世界探险(16) - 快速编译器下的方法编译
查看>>
多线程常用方法 sleep wait join等以及对锁的控制
查看>>
MPEG-DASH新功能白皮书翻译
查看>>
关于图片在内存中的大小(k或者M)
查看>>
2018 一份"有点难"的iOS面试题(5年iOS开发)
查看>>
linux mint19-日常使用笔记
查看>>