基于Leaflet和GraphHopper的离线路径规划
2018-02-08 16:30
2066 查看
地图小白,老大让搞一个web端的离线路径规划,类似于手机app地图的,自己搞了有一个星期多,才整出来。
leaflet是一个为建设移动设备友好的互动地图,而开发的现代的、开源的JS库,只有33K,设计简单、高效、可用性好,支持多浏览器,支持插件扩展,有一个友好的,易于使用的api文档和一个简单的、可读的源代码。
leaflet通过leaflet.routing.machine插件,支持路径规划。通过经由点控制路线搜索,显示行程和替代路线。默认使用 OSRM,但也支持 GraphHopper, Mapbox Directions API等等。在这个地图中,只有GraphHopper,支持离线路径。
离线路径=数据包+路径规划算法,好在GraphHopper是开源的,路径规划算法的jar包可以从Maven库找到,数据包可以根据GitHub上下载的GraphHopper项目资源获取,步骤如下。
1、从openstreetmap导出中国地图数据,我是从Geofabrik里获取的osm.bpf文件(我用的是中国地图数据),
2、从git下载graphhopper项目资源文件夹,cmd,进入当前文件夹,运行./graphhopper.sh web +下载的pbf文件,生成相关路径数据,自动生成一个xx-gh的文件夹,里边就是进行路径规划所需要的地图数据了,(osm.bpf中国整个地图可能会造成jvm的溢出,加到jvm最大内存就好了,我增大到了2G)
3、导入graphhopper相关jar包(这个是我用到的jar包),写离线路径的后台,这个是我的后台,你也可以根据GraphHopper的文档来处理
4、封装成前台需要的数据格式,我是为了基于leaflet的插件lrm-graphhopper,如果只需要路径数据,可以自己处理
5、数据是基于WGS84坐标,要转换成百度的BD09坐标,导入coordtrans的jar包,进行转换,我们项目用的是百度地图的瓦片,而GraphHopper是基于谷歌地图的,坐标系不一样,需要转化下,如果直接用谷歌坐标的话可以不做处理,地理坐标相关内容可参考着篇文档。
到此就实现了基于Leaflet和GraphHopper的离线路径规划,其实离线路径规划主要是GraphHopper的后台处理,有了点坐标,就可以在地图上画出来了。
感谢manmantj的帮助,我是先看到他的文章才完成的《基于openstreemap地图数据的离线路径规划》http://blog.csdn.net/u014712516/article/details/60872310
leaflet是一个为建设移动设备友好的互动地图,而开发的现代的、开源的JS库,只有33K,设计简单、高效、可用性好,支持多浏览器,支持插件扩展,有一个友好的,易于使用的api文档和一个简单的、可读的源代码。
leaflet通过leaflet.routing.machine插件,支持路径规划。通过经由点控制路线搜索,显示行程和替代路线。默认使用 OSRM,但也支持 GraphHopper, Mapbox Directions API等等。在这个地图中,只有GraphHopper,支持离线路径。
离线路径=数据包+路径规划算法,好在GraphHopper是开源的,路径规划算法的jar包可以从Maven库找到,数据包可以根据GitHub上下载的GraphHopper项目资源获取,步骤如下。
1、从openstreetmap导出中国地图数据,我是从Geofabrik里获取的osm.bpf文件(我用的是中国地图数据),
2、从git下载graphhopper项目资源文件夹,cmd,进入当前文件夹,运行./graphhopper.sh web +下载的pbf文件,生成相关路径数据,自动生成一个xx-gh的文件夹,里边就是进行路径规划所需要的地图数据了,(osm.bpf中国整个地图可能会造成jvm的溢出,加到jvm最大内存就好了,我增大到了2G)
3、导入graphhopper相关jar包(这个是我用到的jar包),写离线路径的后台,这个是我的后台,你也可以根据GraphHopper的文档来处理
4、封装成前台需要的数据格式,我是为了基于leaflet的插件lrm-graphhopper,如果只需要路径数据,可以自己处理
5、数据是基于WGS84坐标,要转换成百度的BD09坐标,导入coordtrans的jar包,进行转换,我们项目用的是百度地图的瓦片,而GraphHopper是基于谷歌地图的,坐标系不一样,需要转化下,如果直接用谷歌坐标的话可以不做处理,地理坐标相关内容可参考着篇文档。
到此就实现了基于Leaflet和GraphHopper的离线路径规划,其实离线路径规划主要是GraphHopper的后台处理,有了点坐标,就可以在地图上画出来了。
感谢manmantj的帮助,我是先看到他的文章才完成的《基于openstreemap地图数据的离线路径规划》http://blog.csdn.net/u014712516/article/details/60872310
相关文章推荐
- 高德地图JavaScript API-路径规划——基于amap-js_V1.3
- 基于蚁群算法的机械臂打孔路径规划
- 【课程论文】基于模糊控制的路径规划算法的仿真实现
- 基于模糊权重的路径规划问题
- 创建了一个基于最短路径规划geoserver的wms服务
- Android 基于高德地图路径规划
- 基于电子海图的水面无人艇全局路径规划
- 航线规划(离线+路径压缩)
- 第4章 基于PSO并融合海事规则的已知动态路径规划方法
- 基于struts,spring,ibatis的项目设计及包路径规划
- 基于Leaflet的室内地图最短路径查询部分
- 最短路径规划中创建基于geoserver的wms服务
- 基于pgrouting的路径规划之一
- 基于openlayers的最短路径规划
- 基于改进遗传算法的双重路径约束下多AGV的路径规划
- 基于WSN的灾难现场最优逃生路径规划
- 基于Dragonboard 410c的家庭智能环保卫士——(3)室内路径规划
- OfflineMap 基于MySQL + Node.js + Leaflet的离线地图展示
- 基于高德地图的路径规划+避让区域+途经点导航demo
- 基于混沌遗传算法的无人机路径规划