本来想弄个电子地图和无人驾驶联系起来,后来发现中间存在的问题太多了,坐标系转换、点的精度、地图尺寸等问题,后来就没将二者 联系起来,只做出来一个基于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中怎么写,怎么用,如果有人看的话,下次再写吧