我们采用Visual studio2013作为开发环境,GMap.net作为地图环境,实现相关功能。

一、GMap.net

GMap.NET 是一个免费、开源的.NET控件,有Windows Forms 和WPF2个版本,内置了Google, Yahoo!, Bing, OpenStreetMap, ArcGIS, Pergo, SigPac等实现寻找路径、地理编码以及地图展示功能,并支持缓存和运行在Mobile环境中。在https://gitee.com/lukeson/gmap下载源码,运行build下的批处理文件,生成相应版本的动态库。

二、软件界面
打开vs2013,新建一个项目,起好名称,选择window桌面、windows窗体应用程序,.net版本选为4.0即可。

增加菜单和状态栏,添加一个splitcontainer,左侧设置相关参数区域,右侧设置一个panel,用于承载地图控件,并添加地图切换、覆盖地图(主要用于在卫星图上覆盖路网,生成复合地图)2个Combox控件,再增加一个TrackBar控件,用于控制地图缩放。

在解决方案管理器的引用中添加对GMap.NET.Core.dll和GMap.NET.WindowsForms.dll的引用。
编辑主窗体的源码,加入对Gmap控件的初始化代码,完成地图控件,鼠标移动后经纬度、缩放级别的显示和地图图源配置:

GMapControl gmapc;public mainForm(){InitializeComponent();InitUI();}private void InitMap(){gmapc = new GMapControl();mainPanel.Controls.Add(gmapc);gmapc.Dock = DockStyle.Fill;gmapc.MapProvider = GMapProviders.BingMap;;gmapc.CacheLocation = Application.StartupPath;gmapc.Manager.Mode = AccessMode.ServerOnly;gmapc.Position = new PointLatLng(40.0, 117.0);gmapc.MinZoom = 1;gmapc.MaxZoom = 21;gmapc.Zoom = 5;trackBar1.Value = (int)gmapc.Zoom;gmapc.OnMapZoomChanged += gmapc_OnMapZoomChanged;gmapc.MouseMove += gmapc_MouseMove;}void gmapc_MouseMove(object sender, MouseEventArgs e){PointLatLng point = gmapc.FromLocalToLatLng(e.X,e.Y);tsslPosition.Text = string.Format("鼠标所在经纬度:{0},{1}  当前层:{2}", point.Lng, point.Lat,gmapc.Zoom);}

我们的地图provider先以bing地图为例,运行程序,即可看到地图。这里补充一下,通过gmapc.Manager.Mode = AccessMode.ServerOnly可以设置地图是否缓存到本地,GMap.net会自动为本地创建缓存文件,本项目暂未考虑,所以选择从服务器直接读取。

打造地图拼接利器(二)软件框架相关推荐

  1. 打造地图拼接利器(六)GMap.net内动态显示和更新经纬网络

    地图下载工具初步完成后,有网友提出需要加入经纬网络,看了文档,没有找到相关内容.那就自己动手,丰衣足食吧.最终效果如下图所示: 具体思路是,根据地图界面显示的经纬网络范围,确定一个合理的参数,结合地图 ...

  2. 运动控制+机器视觉Demo软件框架(二):移动标定和形状匹配

    内容回顾 回顾上节课程我们对运动控制+机器视觉的例程Demo的系统参数的设置和配方文件的管理两大模块进行了大致的介绍,接下来我们将对相机标定和形状匹配这两个功能进行介绍. 相机标定的目的是将像素坐标和 ...

  3. 基于ROS搭建简易软件框架实现ROV水下目标跟踪(二)--硬件框架简述

    虽然本系列文章是介绍一个简易的ROV水下目标跟踪demo的软件实现,但软件框架的运行也是需要硬件基础的.鉴于我在这方面不擅长,实际工作也非我完成,由我撰写此部分可能会出现谬误.和完成demo硬件部分的 ...

  4. 实验室管理利器——LIMS软件厂商巡礼

    实验室管理利器--LIMS软件厂商巡礼 LIMS(实验室信息管理系统)作为一种先进的实验室信息化管理手段,日益受到业界的关注与重视,并被视为是现代化实验室不可或缺的管理工具.本文将介绍LIMS的特点与 ...

  5. 如何打造一个让人愉快的框架

    如何打造一个让人愉快的小孩 但考虑到这是一次开发者会议...当我把这个想法和题目提交给大会的时候,被残酷地拒绝了.考虑到我们是一次开发者大会,所以我需要找一些更合适的主题.其实如果你对自己的代码有感情 ...

  6. 室内地图编辑器,什么软件可以编辑地图

    随着室内导航需求增加,使用室内地图成为了一种便捷快速定位的方法,室内场景编辑器可用于3D物联网可视化和室内导航方面.目前现有的室内地图数据基本上是由各个运营单位单独封装成自己的数据格式,并不利于开发者 ...

  7. linux内核中的GPIO系统之(1):软件框架

    一.前言 作为一个工作多年的系统工程师,免不了做两件事情:培训新员工和给新员工分配任务.对于那些刚刚从学校出来的学生,一般在开始的时候总是分配一些非常简单的任务,例如GPIO driver.LED d ...

  8. 自动化设备的软件框架

    自动化设备的软件主要由2部分组成:1是运动控制部分的软件实现,2是上位机处理数据并显示结果的软件实现. 运动控制的实现 第1部分的实现主要有2种方式,一种是用板卡控制的方式,一种是用PLC控制的方式. ...

  9. 软件框架和软件架构的区别?

    软件框架和软件架构的区别? 初学java,遇到jdk,sdk概念:软件开发工具包(外语首字母缩写:SDK.外语全称:Software Development Kit)一般都是一些软件工程师为特定的软件 ...

最新文章

  1. python画二维散点图-python3实现绘制二维点图
  2. 一个完整的python项目源码-一个Python开源项目-哈勃沙箱源码剖析(下)
  3. Android Intent机制详解
  4. when and where is gt_cache_in_memory filled
  5. 超级计算机阿波罗11,Apollo 8000推进超算科学发展
  6. 给定一个年份,判断是不是闰年
  7. 海龟绘图小动物_被解救海龟经野化训练后放归大海,这一幕让人惊叹不已
  8. 【Linux系列】centos7中防火墙相关命令
  9. 47.本地Hyper-V虚拟机的异地(Azure)容灾(上)
  10. 读过的设计模式的书小结
  11. 软工课后作业01 15100152
  12. Dell Inspiron 3443 BIOS升级问题解决
  13. 采用腾讯云直播断流续播相关问题
  14. Qt解决连接https报错
  15. iOS开发中extension的用法(延展)
  16. 父类引用指向子类对象是什么意思
  17. c语言作业存款,2道C语言的题第一:设银行定期存款的年利率rate为2.25%,并已知存款期为n年,存款本金为capital元,试编程计...
  18. 自然辩证法复习题 1
  19. 基于ik分词器和布隆过滤器实现敏感词过滤
  20. 服务器托管比租用贵主要体现在哪些方面

热门文章

  1. 上海民办中芯学校学生返校开学
  2. Java中英文字母汉字混合字符长度值计算
  3. 使用vuetify v-combox组件实现快速数据源添加
  4. android开关机音乐6,android实现开机自动播放音乐实例(Broadcast、Service)
  5. linux下网上银行+支付宝+淘宝购物
  6. 感谢有你!所有贡献者来领礼物了
  7. 包装土味的福建零食,撑起中国休闲食品半边天
  8. 21年美亚杯个人题解,由于要准备美亚22,所以认真地刷了一下题,这里也分享一下个人赛题目,希望与大家一起进步。
  9. 中国长超细纤维市场趋势报告、技术动态创新及市场预测
  10. 【案例教程】ArcGIS在洪水普查、风险评估及区划中的实践技术