protected List<BNRoutePlanNode> list = new ArrayList<>(); @Override protected void addWaypoint(PoiInfo poiInfo) { BNRoutePlanNode build = new BNRoutePlanNode.Builder() .latitude(poiInfo.getLocation().latitude) .longitude(poiInfo.getLocation().longitude) .name(poiInfo.name) .description(poiInfo.name) .build(); if (!list.contains(build)) { list.add(build); } BaiduNaviManagerFactory.getRouteGuideManager().addViaNodes(list); //设置最大途径点的个数(支持4~18个) BaiduNaviManagerFactory.getCommonSettingManager().setViaPointCount(4); mAllPoi.clear(); setSessionOver(true); } 以上代码是安卓百度导航添加途经点功能的代码,但是有个问题,第二次执行添加途经点addViaNodes(list)后, 地图上只显示了途经点1和途经点3,没有途经点2。因为void addViaNodes(List<BNRoutePlanNode> var1)方法每次都添加一个list,添加第二次的话list有两条数据,它还会算上第一次添加的list数据,从而导致途径点变成1和3,没有途经点2 我设置的是可以添加四条途经点信息,从list中可以知道这四条途经点的信息数据。有没有好的方法可以帮我解决我添加途径带你只显示1和3的问题?
时间: 2024-02-23 14:59:35 浏览: 219
可以尝试在每次调用 `addWaypoint` 方法前,先清空 `list` 集合,然后重新添加所有途经点信息。这样就不会出现重复添加的问题了。修改后的代码如下:
```
protected List<BNRoutePlanNode> list = new ArrayList<>();
@Override
protected void addWaypoint(PoiInfo poiInfo) {
list.clear(); // 先清空集合
for (int i = 0; i < mAllPoi.size(); i++) {
if (mAllPoi.get(i).isSelected()) {
BNRoutePlanNode build = new BNRoutePlanNode.Builder()
.latitude(mAllPoi.get(i).getLocation().latitude)
.longitude(mAllPoi.get(i).getLocation().longitude)
.name(mAllPoi.get(i).getName())
.description(mAllPoi.get(i).getName())
.build();
list.add(build);
}
}
BaiduNaviManagerFactory.getRouteGuideManager().addViaNodes(list);
// 设置最大途经点的个数(支持4~18个)
BaiduNaviManagerFactory.getCommonSettingManager().setViaPointCount(4);
mAllPoi.clear();
setSessionOver(true);
}
```
这样每次添加途径点时,都会重新遍历 `mAllPoi` 集合并重新添加所有的途径点信息,不会出现漏掉某个途径点的情况。
阅读全文