gpt4 book ai didi

android - Graphhopper on Android离线路由pbf文件报错

转载 作者:太空宇宙 更新时间:2023-11-03 10:20:28 26 4
gpt4 key购买 nike

我正在尝试创建一个将 Osmdroid 与 Graphhoper 相结合的应用程序,以实现城市区域的离线路由。我从 Open Street Maps 导出 osm 文件并将该文件转换为 pbf。问题是应用程序无法加载 pbf 文件,因为 Graphhoper 试图使用 java.xml.stream 解析 pbf 文件,这在 Android 设备上不可用。这是我用来加载 pbf 文件的函数。

    public void setRouting(){
File dir = new File(Environment.getExternalStorageDirectory(),"osmdroid");
File osmFile=new File(dir,"offline-map.osm.pbf");

if(!osmFile.exists()){
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setMessage("File doesn't exist").setTitle("Error");
AlertDialog dialog = builder.create();
dialog.show();
return;
}


GraphHopper hopper = new GraphHopper().forMobile();
hopper.setEncodingManager(encodingManager);
hopper.setGraphHopperLocation(getApplicationContext().getFilesDir().getPath());
hopper.setOSMFile(osmFile.getAbsolutePath());
hopper.setCHShortcuts("fastest");
hopper.importOrLoad();
}

我知道可以将 osm 转换为 ghz(在我的情况下有效): https://github.com/graphhopper/graphhopper/blob/0.3/docs/android/index.md但我不能执行这个:

./graphhopper.sh import <your-osm-file>    

在 Windows 操作系统上。

我没有使用 Maven 来包含 Graphhopper。我将 jar 插入到 libs 文件夹中。

如何将osm文件导入到我的项目中实现离线路由?

我终于设法解决了这个问题。

我是这样做的:

  1. 下载Apache maven
  2. 向下滚动到安装说明 - Windows 部分并按照 maven 安装步骤进行操作
  3. 设置环境用户变量 MAVEN_HOME 即:C:\Program Files\Apache Software Foundation\apache-maven-3.2.1。 (重要的是使用与 M2_HOME 相同的值)
  4. 将 Graphopper git 克隆到本地机器 git或以 zip 格式下载存储库并将其解压缩到本地磁盘上的某个位置
  5. 下载并安装 Cygwin
  6. 运行 Cygwin
  7. $ cd/cygdrive/
  8. 您现在位于根目录下,键入“ls”以查看计算机上的所有驱动器
  9. 将您自己定位到 Graphhopper git root。即对于 c:\git\graphopper:
    $ 光盘
    $ cd 混帐
    $ cd 绘图器

参见 linux navigation tips如何导航10. 将你的 filename.osm 文件复制到 Graphhoper git root11. $ ./graphhopper.sh 导入文件名.osm12. 你的 Graphopper git 根文件夹中应该有文件夹 filename-gh,里面有你需要的一切。13.将该文件夹复制到您的移动设备14. 你现在可以使用这样的东西:` File dir = new File(Environment.getExternalStorageDirectory(),"map-parent-folder-name"); File ghDir=new File(dir.getAbsolutePath(),"filename-gh");

hopper = new GraphHopper().forMobile();
hopper.setCHShortcuts("fastest");
hopper.load(ghDir.getAbsolutePath());

初始化graphopper

还有两个提示。如果您没有 Graphopper jar (graphhopper-0.3-SNAPSHOT.jar),您可以创建一个:$ ./graphhopper.sh 构建文件名.osm新 jar 位于 core/target/文件夹中

您将需要可以下载的 trove-3.0.3.jar here .只需将 zip 中的 trove-3.0.3.jar 添加到项目的 libs 文件夹中

我希望我没有忘记任何事情:)

最佳答案

您不能在 Android 上导入 xml/pbf(目前)。当您在 Windows 上时,请查看 the docs如何通过 cygwin 执行导入。

关于android - Graphhopper on Android离线路由pbf文件报错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23875433/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com