GraphHopper使用离线路线规划很容易出现规划失败,特别是偏离城市的区域。
解决方式就是初始化的时候:
1.设置精确度为一百万。值越大越好,目前来看 一百万就够了。
GraphHopper graphHopper = new GraphHopper().forMobile();
graphHopper.setPreciseIndexResolution(1000000);
2.在graphHopper.load(路网数据路径)初始化后,在设置最大搜索区域
LocationIndex locationIndex = graphHopper.getLocationIndex();
if (locationIndex instanceof LocationIndexTree){
((LocationIndexTree) locationIndex).setMaxRegionSearch(40);
}
这样就ok了。
protected LocationIndex createLocationIndex(Directory dir) {
LocationIndexTree tmpIndex = new LocationIndexTree(this.ghStorage, dir);
tmpIndex.setResolution(this.preciseIndexResolution);
tmpIndex.setMaxRegionSearch(this.maxRegionSearch);
if (!tmpIndex.loadExisting()) {
this.ensureWriteAccess();
tmpIndex.prepareIndex();
}
return tmpIndex;
}
这个方法是GraphHopper类里面的,preciseIndexResolution和maxRegionSearch这两个参数控制离线道路规划搜索范围。