Osmdroid 路由:如果起始坐标不在街道上,路由是一条直线

问题描述

情况: 我正在使用 osmdroid 路由从我的位置导航到预先目标。这仅在起始坐标完全在街道上时才有效。但是,如果起始坐标离街道只有一点点,osmdroid 只会画一条直线。以下两个例子说明了这一点:

示例 1:从坐标 A(在街道上)导航到坐标 B(有点远离街道):

enter image description here

示例 2:从坐标 B(离街道有点远)导航到坐标 A(在街道上):

enter image description here

示例 1 和示例 2 使用完全相同的代码生成,但示例 1 是从 A 到 B,示例 2 从 B 到 A。以下代码用于这样做(坐标 A 是 startPoint,坐标 B 是 endPoint in代码

RoadManager roadManager = new OSRMRoadManager(this);
    GeoPoint startPoint = new GeoPoint(47.4660,8.3266);
    GeoPoint endPoint = new GeoPoint(47.4082,8.3320);

    ArrayList<GeoPoint> waypoints = new ArrayList<GeoPoint>();
    waypoints.add(endPoint);
    waypoints.add(startPoint);

    Road road = roadManager.getRoad(waypoints);
    polyline roadOverlay = RoadManager.buildroadOverlay(road);

    map.getoverlays().add(roadOverlay);
    map.invalidate();

如何根据所有坐标绘制正确的路线 - 即使它们离最近的街道有点远?或者有没有办法从某个位置获得最近的街道?

非常感谢您的帮助

编辑

在 Logcat 中,我收到以下消息 - 没有退出值可能意味着一些重要的事情,但我不知道是什么。如果我将请求粘贴到浏览器中,它会完美运行:

2021-04-19 22:54:15.301 1648-1911/com.interacode.fahrapp W/System.err: org.json.JSONException: No value for exit 2021-04-19 22:54:15.301 1648-1911/com.interacode.fahrapp W/System.err: at org.json.JSONObject.get(JSONObject.java:399) 2021-04-19 22:54:15.301 1648-1911/com.interacode.fahrapp W/System.err: at org.json.JSONObject.getInt(JSONObject.java:488) 2021-04-19 22:54:15.301 1648-1911/com.interacode.fahrapp W/System.err: at org.osmdroid.bonuspack.routing.OSRMRoadManager.getRoads(OSRMRoadManager.java:247) 2021-04-19 22:54:15.301 1648-1911/com.interacode.fahrapp W/System.err: at org.osmdroid.bonuspack.routing.OSRMRoadManager.getRoad(OSRMRoadManager.java:284) 2021-04-19 22:54:15.301 1648-1911/com.interacode.fahrapp W/System.err: at com.interacode.fahrapp.NavigateSimulation$UpdateRoadTask.doInBackground(NavigateSimulation.java:236) 2021-04-19 22:54:15.301 1648-1911/com.interacode.fahrapp W/System.err: at com.interacode.fahrapp.NavigateSimulation$UpdateRoadTask.doInBackground(NavigateSimulation.java:225) 2021-04-19 22:54:15.301 1648-1911/com.interacode.fahrapp W/System.err: at android.os.AsyncTask$3.call(AsyncTask.java:378) 2021-04-19 22:54:15.301 1648-1911/com.interacode.fahrapp W/System.err: at java.util.concurrent.FutureTask.run(FutureTask.java:266) 2021-04-19 22:54:15.301 1648-1911/com.interacode.fahrapp W/System.err: at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:289) 2021-04-19 22:54:15.301 1648-1911/com.interacode.fahrapp W/System.err: at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167) 2021-04-19 22:54:15.301 1648-1911/com.interacode.fahrapp W/System.err: at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641) 2021-04-19 22:54:15.301 1648-1911/com.interacode.fahrapp W/System.err: at java.lang.Thread.run(Thread.java:919)

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...