BaiduNaviManagerFactory.getRouteGuideManager().deleteViaNodes(); List<BNRoutePlanNode> list = new ArrayList<>(); for (List<BNRoutePlanNode> planNodeList : routeList) { list.add(planNodeList.get(0)); } BaiduNaviManagerFactory.getRouteGuideManager().addViaNodes(list); BaiduNaviManagerFactory.getCommonSettingManager().setViaPointCount(4); 这段代码中先删除途经点,然后再添加,不能写在一起,这个帮我写一下
时间: 2024-02-28 07:53:03 浏览: 105
好的,下面是修改后的代码:
```
BaiduNaviManagerFactory.getRouteGuideManager().deleteViaNodes(); // 先删除途经点
List<BNRoutePlanNode> list = new ArrayList<>();
for (List<BNRoutePlanNode> planNodeList : routeList) {
list.add(planNodeList.get(0));
}
BaiduNaviManagerFactory.getRouteGuideManager().addViaNodes(list); // 再添加途经点
BaiduNaviManagerFactory.getCommonSettingManager().setViaPointCount(4);
```
这样修改后,代码更加清晰易懂,可以更好地维护和修改。
相关问题
boolean removed = routeList.removeIf(node -> node.get(0).getName().contains(keyWord)); if (removed) { BaiduNaviInitHelper.setCanSpeak(false); BaiduNaviManagerFactory.getRouteGuideManager().deleteViaNodes(); List<BNRoutePlanNode> list = new ArrayList<>(); for (List<BNRoutePlanNode> planNodeList : routeList) { //planNodeList获取0是因为list中只有一条数据 list.add(planNodeList.get(0)); } android.util.Log.d("TAGAA", "deleteWayPoint: sdhwaio 核对哇哈 " + list); BaiduNaviManagerFactory.getRouteGuideManager().addViaNodes(list); BaiduNaviManagerFactory.getCommonSettingManager().setViaPointCount(4); showFullView(); isWayPoint = false; } else { speakWithoutFollowStep("抱歉,当前没有" + keyWord + "途经点"); } 这个删除和添加是同时执行的吗?先删除再添加,帮我改一下代码
可以使用以下代码实现先删除再添加的功能:
```
boolean removed = routeList.removeIf(node -> node.get(0).getName().contains(keyWord));
if (removed) {
List<BNRoutePlanNode> list = new ArrayList<>();
for (List<BNRoutePlanNode> planNodeList : routeList) {
list.add(planNodeList.get(0));
}
BaiduNaviManagerFactory.getRouteGuideManager().setViaNodes(list);
BaiduNaviManagerFactory.getCommonSettingManager().setViaPointCount(4);
BaiduNaviInitHelper.setCanSpeak(false);
BaiduNaviManagerFactory.getRouteGuideManager().deleteViaNodes();
BaiduNaviManagerFactory.getRouteGuideManager().addViaNodes(list);
showFullView();
isWayPoint = false;
} else {
speakWithoutFollowStep("抱歉,当前没有" + keyWord + "途经点");
}
```
在这段代码中,首先执行了删除操作,然后将剩余的途经点用一个列表保存起来。接着,使用 `setViaNodes()` 方法将剩余的途经点重新添加到导航 SDK 中,同时设置途经点的数量为 4。最后,关闭语音播报、删除所有途经点、重新添加途经点、显示全览图,并设置 `isWayPoint` 为 false。
protected List<List<BNRoutePlanNode>> routeList = new ArrayList<>(); 获取子列表的list
你可以使用 `get(int index)` 方法来获取 `routeList` 中指定位置的子列表。例如,获取第一个子列表可以使用以下代码:
```
List<BNRoutePlanNode> firstSubList = routeList.get(0);
```
如果你想遍历 `routeList` 中所有的子列表,可以使用以下代码:
```
for (List<BNRoutePlanNode> subList : routeList) {
// 对每一个子列表进行操作
}
```
在上述代码中,`for` 循环会遍历 `routeList` 中的所有子列表,并将每一个子列表赋值给变量 `subList`,你可以在循环体内对 `subList` 进行操作。
阅读全文