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

mmvthczy  于 2021-07-14  发布在  Java
关注(0)|答案(0)|浏览(254)

情况:我正在使用osmdroid路由从我的位置导航到预目标。只有当起始坐标完全位于街道上时,此方法才有效。但是,如果开始坐标距街道只有一点点距离,osmdroid将只绘制一条直线。以下两个例子说明了这一点:
示例1:从坐标a(在街道上)导航到坐标b(离街道有点远):

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

示例1和示例2使用完全相同的代码生成,但示例1是从a到b,示例2是从b到a。使用以下代码执行此操作(坐标a是代码中的起点,坐标b是终点):

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中,我得到以下消息-no value for exit可能意味着一些重要的事情,但我不知道是什么。如果我将请求粘贴到浏览器中,它将非常有效: 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)

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题