首先graphhopper是一个开源的免费的的路线规划,里面涵盖了全世界的地图,采用的经度纬度上WGS84(Gps)坐标系。因为是开源的所以设计到一些很精细到城市道路路线,可能与国内的三大图商(百度、高德、腾讯)有所差距。但是开源意味着我们可以免费使用,感谢graphhopper。GraphHopper Directions API with Route Optimization

话不多说,直接说怎么使用。

去openstream Map下载开源的亚洲板块中的中国地图数据Geofabrik Download Server

(当然如果你精确到中国的某一个城市,可以中国地图里面下载某一个城市的地图)

依赖:

 <!-- https://mvnrepository.com/artifact/com.graphhopper/graphhopper-core --><dependency><groupId>com.graphhopper</groupId><artifactId>graphhopper-core</artifactId><version>4.0</version></dependency>
 public  GraphHopper createGraphHopperInstance() {GraphHopper hopper = new GraphHopper();// OSM 文件路径hopper.setOSMFile("china-latest.osm.pbf");// 读取完OSM数据之后会构建路线图,此处配置图的存储路径hopper.setGraphHopperLocation("target/routing-graph-cache");// 支持car、bike、foot三种交通方式的导航hopper.setProfiles(new Profile("car").setVehicle("car").setWeighting("fastest").setTurnCosts(false));//设置汽车hopper.getCHPreparationHandler().setCHProfiles(new CHProfile("car"));hopper.importOrLoad();return hopper;}//自制路线距离public Route routing(GraphHopper hopper, GrahhVo grahhVo) {//输入你的经度纬度,选择交通方式GHRequest req = new GHRequest(grahhVo.getFromLat(), grahhVo.getFromLng(),  grahhVo.getToLat(), grahhVo.getToLng()).setProfile("car");GHResponse rsp = hopper.route(req);//如果路线不可达抛异常try {// handle errorsif (rsp.hasErrors()) throw new RuntimeException(rsp.getErrors().toString());} catch (Exception e) {e.printStackTrace();return routing(grahhVo);}// use the best path, see the GHResponse class for more possibilities.ResponsePath path = rsp.getBest();// 导航结果点位集合PointList pointList = path.getPoints();// 总距离 mdouble distance=0;distance = path.getDistance();// 总耗时 mslong timeInMs=0;timeInMs = (path.getTime())/1000;System.out.println("路线点位: " + pointList);System.out.println("总距离: " + distance + ", 总用时: " + timeInMs);GHPoint3D from = pointList.get(0);GHPoint3D to = pointList.get(pointList.size()-1);System.out.println("第一个点的坐标呢:"+pointList.get(pointList.size()-1)+"))))");Translation tr = hopper.getTranslationMap().getWithFallBack(Locale.CHINA);InstructionList il = path.getInstructions();// iterate over all turn instructionsfor (Instruction instruction : il) {System.out.println("distance " + instruction.getDistance() + " for instruction: " + instruction.getTurnDescription(tr));}//选择自己需要的,并创建实体类Route route=new Route();/* route.setStartId(grahhVo.getStartId());route.setEndId(grahhVo.getEndId());if(grahhVo.getStartType()!=null)route.setStartType(grahhVo.getStartType());if(grahhVo.getEndType()!=null)route.setEndType(grahhVo.getEndType());route.setFromLat(grahhVo.getFromLat());route.setFromLon(grahhVo.getFromLng());route.setToLat(grahhVo.getToLat());route.setToLon(grahhVo.getToLng());route.setInstance(GetDistance(grahhVo.getFromLat(),grahhVo.getFromLng(),grahhVo.getToLat(), grahhVo.getToLng()));if(distance!=0)route.setDistance(distance);if(timeInMs!=0)route.setTime(timeInMs);if(pointList!=null) {route.setStartDistance(GetDistance(grahhVo.getFromLat(), grahhVo.getFromLng(), from.getLat(), from.getLon()));route.setEndDistance(GetDistance(grahhVo.getToLat(), grahhVo.getToLng(), to.getLat(), to.getLon()));}if(pointList!=null){route.setUnicom(0);}else{route.setUnicom(1);}route.setCity(grahhVo.getCity());*/return route;}

地图展示 Driving Directions - GraphHopper Maps

设计到地图上页面的展示,可以使用graphhopper里面全世界的地图进行展示,输入你的经度纬度(WGS84),与国内采用的经度纬度有点不一样,可以看看我自己的博客里面有关于经度纬度的转换文章。

graphhopper进行路线规划时间很快,估计在6ms到60ms之内,效率很高比我们国内调用图商(百度、高德、腾讯的api还快),通过我自己很多路径规划分析,感觉graphhopper的路径规划和高德的路径规划很接近。

Java使用graphhopper完成路线规划相关推荐

  1. 计算机毕业设计Java春运出行铁路路线规划推荐系统(源码+系统+mysql数据库+lw文档)

    计算机毕业设计Java春运出行铁路路线规划推荐系统(源码+系统+mysql数据库+lw文档) 计算机毕业设计Java春运出行铁路路线规划推荐系统(源码+系统+mysql数据库+lw文档) 本源码技术栈 ...

  2. java学习明确的路线规划奉上,助大家进阶

    1.刚开始需要知道什么 Java SE是我们Java入门的开端,是Java学习的基石,这块内容也就是大家所熟悉的坦克大战.聊天软件.五子棋这些桌面级项目所组成的.学完了Java SE部分,接下来就该选 ...

  3. 写给想去银行国企Java岗位的学习路线规划

    随着我前段时间大论文的事情基本忙完了,最近也终于能放松起来,想着CSDN上的博主帮了我很多,在最后也写篇博文回馈一下大家吧,至于有多少人看到,就随缘~ 目标读者: 想去 银行国企计算机类的学弟学妹,尤 ...

  4. Java工程师如何做好职业规划和成长路线?

    成为一名Java开发工程师是很多学习Java的人的初衷,但任何职业都需要有职业规划和成长路线,只有这样才能不断进步,向更高的层次进阶.下面小千就从以下三点上建议Java工程师如何做好职业规划和成长路线 ...

  5. java学习路线规划

    java学习路线规划 一.写在前面 兄弟,我整理了一下关于自己之前学习java的一些方向,给你归纳在这里,有空就来看看,希望对你有帮助. 二.java基础篇 1.认识java ​ 了解java历史,大 ...

  6. java 高德地图路线规划_公交出行路线规划-出行路线规划-开发指南-Android 地图SDK | 高德地图API...

    公交路径规划可以根据起终点和公交换乘的数据,使用 BusRouteOverlay 画出公交路线图层,包括起终点和换乘点.另外也可以自定义起终点和换乘点的图标. 目前支持跨城公交路线规划,提供不同城市之 ...

  7. 毕业倒计时 — 科班仔Java后端的点滴与学习路线规划

    毕业倒计时 - 科班仔Java后端的点滴与学习路线规划 文章目录 毕业倒计时 - 科班仔Java后端的点滴与学习路线规划 一.前言 二.选好方向-"站在风口上,猪都能上天" 三.学 ...

  8. Java毕设项目春运出行铁路路线规划推荐系统(java+VUE+Mybatis+Maven+Mysql)

    Java毕设项目春运出行铁路路线规划推荐系统(java+VUE+Mybatis+Maven+Mysql) 项目运行 环境配置: Jdk1.8 + Tomcat8.5 + Mysql + HBuilde ...

  9. 大学四年Java后端学习路线规划,所有私藏资料我都贡献出来了,不看毕业肯定后悔!!!

    一定要走在学校前面自学,规划好自己的时间,按照自己的路线走. 大学四年Java后端学习路线规划,所有私藏资料我都贡献出来了,不看毕业肯定后悔!!! 学习路线与资源方法 一.第一件事,很重要!!! 二. ...

最新文章

  1. Nginx + FastCgi + Spawn-fcgi + c 的架构
  2. vxworks linux 多线程api,vxWorks多任务编程初探(转)
  3. Redis与Memcache的对比
  4. [GYM 100492A] Average Convex Hull 凸包好题
  5. 虫师python appium自动化测试书_基于python的Appium自动化测试的坑
  6. 基础——ASP.NET页面的生命周期
  7. 如何构建JavaScript警报框或弹出窗口
  8. 【jQuery】学习整理(一) 认识jQuery
  9. UVa 1326 - Jurassic Remains
  10. 简要分析上海链家9月二手房
  11. 真正解决IDEA中Tomcat中文乱码问题
  12. 【花瓣网】花瓣网练习-首页的静态页
  13. 我要换博客啦~Github+Hexo~Windows版本
  14. ST17H66 低功耗蓝牙SOC开发(3)—— OSAL系统简介
  15. element表格固定表头
  16. 蓝牙耳机南卡和苹果哪个好用?南卡耳机和苹果耳机深度体验报告
  17. 项目:淘宝用户数据分析
  18. ubuntu 12.04 用后感
  19. 「CSS」文本编排相关的CSS属性设置
  20. 微软Windows系统发展史

热门文章

  1. 马云卸任演讲中的“信任”和“责任”
  2. [IE9] IE9正式版发布(附官方下载链接)
  3. UISearchBar背景色及边框修改
  4. 如何用计算机处理图片,修改图片用什么软件 小白必看的图片处理技巧_电脑故障...
  5. 4.19 亿条 Facebook 用户账号及电话号码被泄露【智能快讯】
  6. SpringBoot 阿里云短信功能使用
  7. 投中5G+IoT时代的操作系统,TCL凭什么?
  8. 看完张一鸣近十年微博,我总结了这些成长特质
  9. mysql拒绝访问root用户_对于出现拒绝访问root用户的解决方案
  10. tinymce6.0+ 插件按钮翻译