//删除所有途经点 BaiduNaviManagerFactory.getRouteGuideManager().deleteViaNodes(); try { //这里休眠2秒时是要避免和删除途经点同时进行 Thread.sleep(2000); //添加途经点 BaiduNaviManagerFactory.getRouteGuideManager().addViaNodes(list); BaiduNaviManagerFactory.getCommonSettingManager().setViaPointCount(4); } catch (InterruptedException e) { e.printStackTrace(); } 这个写的咋样
时间: 2024-02-10 18:33:54 浏览: 65
这段代码主要是使用百度导航SDK来进行添加和删除途经点的操作。首先调用`deleteViaNodes()`方法删除所有的途经点,然后使用`addViaNodes()`方法添加途经点。在添加途经点前,通过调用`Thread.sleep(2000)`方法来等待2秒钟,避免和删除途经点的操作同时进行。最后调用`setViaPointCount(4)`方法设置途经点的个数为4。根据具体的需求和场景,这段代码的实现可能还需要进行一些微调和优化。
相关问题
boolean removed = routeList.removeIf(node -> node.get(0).getName().contains(keyWord)); if (removed) { BaiduNaviInitHelper.setCanSpeak(false); //删除所有途经点 BaiduNaviManagerFactory.getRouteGuideManager().deleteViaNodes(); try { //这里休眠2秒是要避免和删除途经点同时操作 Thread.sleep(2000); List<BNRoutePlanNode> list = new ArrayList<>(); for (List<BNRoutePlanNode> planNodeList : routeList) { //planNodeList获取0是因为list中只有一条数据 list.add(planNodeList.get(0)); } android.util.Log.d("TAGAA", "deleteWayPoint: 数据 "+routeList+"\n"+list); //添加途经点 BaiduNaviManagerFactory.getRouteGuideManager().addViaNodes(list); BaiduNaviManagerFactory.getCommonSettingManager().setViaPointCount(routeList.size()); } catch (InterruptedException e) { e.printStackTrace(); } showFullView(); isWayPoint = true; 添加途经点没有添加上是什么原因?
可能的原因有很多,需要进一步排查。以下是一些可能导致添加途经点失败的原因:
1. 路线规划出错,无法添加途经点。您可以尝试重新规划路线,或者检查您添加的途经点是否正确。
2. 调用添加途经点的方法时,路线尚未规划完成。您可以等待一段时间,直到路线规划完成后再添加途经点。
3. 途经点和起点/终点存在重叠。您可以检查您添加的途经点是否和起点/终点在同一位置。
4. 途经点的坐标格式不正确。您可以检查您添加的途经点的坐标格式是否正确。
5. 您的代码逻辑有误。您可以检查您的代码逻辑,看看是否存在其他可能导致添加途经点失败的问题。
希望以上解答能够帮到您,如果还有问题,请随时提出。
boolean removed = routeList.removeIf(node -> node.get(0).getName().contains(keyWord)); android.util.Log.d("TAGAA", "deleteWayPoint: 删除了吗? " + routeList); if (removed && routeList != null) { List<BNRoutePlanNode> list = new ArrayList<>(); for (List<BNRoutePlanNode> planNodeList : routeList) { //planNodeList获取0是因为list中只有一条数据 list.add(planNodeList.get(0)); } BaiduNaviInitHelper.setCanSpeak(false); //删除所有途经点 BaiduNaviManagerFactory.getRouteGuideManager().deleteViaNodes(); new Thread(() -> { //添加途经点 BaiduNaviManagerFactory.getRouteGuideManager().addViaNodes(list); BaiduNaviManagerFactory.getCommonSettingManager().setViaPointCount(4); }).start(); showFullView(); isWayPoint = true; } else { speakWithoutFollowStep("抱歉,当前没有" + keyWord + "途经点"); } 怎么样才能使 删除和添加途经点不同时执行
要使删除和添加途经点不同时执行,可以将添加途经点的代码放在删除途经点的代码之后,这样可以确保先删除途经点再添加途经点。修改后的代码如下:
```
boolean removed = routeList.removeIf(node -> node.get(0).getName().contains(keyWord));
android.util.Log.d("TAGAA", "deleteWayPoint: 删除了吗? " + routeList);
if (removed && routeList != null) {
List<BNRoutePlanNode> list = new ArrayList<>();
for (List<BNRoutePlanNode> planNodeList : routeList) {
//planNodeList获取0是因为list中只有一条数据
list.add(planNodeList.get(0));
}
BaiduNaviInitHelper.setCanSpeak(false);
//删除所有途经点
BaiduNaviManagerFactory.getRouteGuideManager().deleteViaNodes();
showFullView();
isWayPoint = true;
new Thread(() -> {
//添加途经点
BaiduNaviManagerFactory.getRouteGuideManager().addViaNodes(list);
BaiduNaviManagerFactory.getCommonSettingManager().setViaPointCount(4);
}).start();
} else {
speakWithoutFollowStep("抱歉,当前没有" + keyWord + "途经点");
}
```
这样修改后,先删除途经点,然后展示全景视图和设置 `isWayPoint` 标志位为 `true`,最后在新线程中添加途经点。
阅读全文