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,我觉得是把第一次添加的数据也算上了,因为第一次添加是一个数据,第二次添加的话list中是有两条数据,我想要让它添加第二次的时候,把之前添加的数据给删了,直接添加两条数据,两个途经点
时间: 2024-02-23 08:59:15 浏览: 79
你可以在每次添加途经点之前,先将之前添加的途经点清空,然后再将新的途经点添加到list中。具体代码如下:
```
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();
// 清空之前添加的途经点
list.clear();
if (!list.contains(build)) {
// 添加新的途经点
list.add(build);
}
BaiduNaviManagerFactory.getRouteGuideManager().addViaNodes(list);
//设置最大途径点的个数(支持4~18个)
BaiduNaviManagerFactory.getCommonSettingManager().setViaPointCount(4);
mAllPoi.clear();
setSessionOver(true);
}
```
这样,每次添加途经点时,都会先将之前添加的途经点清空,然后再添加新的途经点,避免了之前添加的途经点被重复计算的问题。
阅读全文