本文主要是介绍离线电子地图路径规划,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
本来想弄个电子地图和无人驾驶联系起来,后来发现中间存在的问题太多了,坐标系转换、点的精度、地图尺寸等问题,后来就没将二者 联系起来,只做出来一个基于MFC与HTML交互的离线电子地图路径规划的程序。
做这个参考了好多资源吧,其中也有些是自己写的,我这里就是整理整理。
首先说明我的程序能实现什么,先放图
首先是一个MFC框架,占据最大地方的是一个web空间,通过在onintit中加载一个URL把HTML的文本文档加载进去,这个很简单,CSDN上有教程。
地图我是用的OpenStreetMap的地图,用Maperitive下载瓦片,存放出一个Tiles,也可以使用在线地图,只需要把html中的链接该成网址即可,
//var osmUrl='http://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png';var osmUrl='Tiles/{z}/{x}/{y}.png';
第一行是在线地图,第二行是调用下载好的离线瓦片资源。
这个问题也不大,网上有很对关于百度地图的加载教程,我使用的是leaflet
想要在地图中实现什么功能,找几个js就行
<title>LeafletOSM</title><link rel="stylesheet" href="leaflet/leaflet.css">
<link rel="stylesheet" href="leaflet/leaflet.marker.highlight.css"><link rel="stylesheet" href="leaflet/leaflet-routing-machine.css"><link rel="stylesheet" href="leaflet/leaflet.contextmenu.css"><script src="leaflet/leaflet.js"></script><script src="leaflet/leaflet.marker.highlight.js"></script>
<script src="leaflet/es5-shim.min.js"></script>
<script src="leaflet/leaflet-routing-machine.js"></script>
<script src="leaflet/leaflet.contextmenu.js"></script>
<script src="leaflet/json2.js"></script>
。下面就是最重点的部分了,如何实现离线的路径规划,还要把数据提取出来。
graphhopper 什么原理咱也不懂,反正就是真香,在WINDOWS和LINUX中都能用,我是在Github上对着教程一点点尝试的,说实话,他们那教程有点混乱。
先说怎么用,在说怎么做吧,我是参考了一个博客做的 基于Leaflet和GraphHopper实现离线路径规划
写的不错,还有这个 基于OpenStreetMap地图数据的离线路径规划
怎么用呢,WIN+R ,cmd,进入你下载某东西的一个盘,
java -Dgraphhopper.datareader.file=where.osm.pbf -jar graphhopper-web-****.jar server config-example.yml
输入这个代码就行了
解释一下,java 需要配置java环境
-Dgraphhopper.datareader.file=where.osm.pbf
使用graphhpper算法打开某地方的.osm.pbf文件,这个就是你所要进行路径规划的地图范围,比如:shandong-latest.osm.pbf
-jar graphhopper-web-****.jar
****是一个版本号,自己去github下载最新版本对应上就行,
所以你的文件夹中应有三个文件
config-example.yml 配置文件
graphhopper-web-0.**.0.jar 算法文件
shandong-latest.osm.pbf 地图文件
运行后,会有下图显示
然后你保持这个终端开启,(linux一样,语句都一样),打开HTML地图,就能进行路径规划了。
至于HTML中怎么写,怎么用,如果有人看的话,下次再写吧
这篇关于离线电子地图路径规划的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!