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); } 这段代码中把list写在方法外面,就是为了每次添加途经点的时候,list中可以有上一次添加的数据,但是BaiduNaviManagerFactory.getRouteGuideManager().addViaNodes(list);这个addViaNodes方法它是每次添加一个list进去,导致了我第二次添加途经点时,在地图上显示了途经点3,也就是第二次添加途经点时我list中有两条数据,第一条数据已经被我添加途经点了,这时候再去添加就不行了,我想要的效果是,第二次、第三次以致以后每次添加途径点的时候,都可以添加上,
时间: 2024-02-23 15:01:11 浏览: 94
Android SearchView搜索框组件的使用方法
如果你想要每次添加途经点的时候,都可以将之前的途经点和新添加的途经点一起添加,可以将添加途经点的代码放到 addWaypoint 方法内部,每次执行这个方法的时候都会重新创建一个新的 List 对象,然后把之前的途经点和新添加的途经点一起添加到这个 List 中,然后再调用 addViaNodes 方法。
修改后的代码如下:
```
@Override
protected void addWaypoint(PoiInfo poiInfo) {
List<BNRoutePlanNode> list = new ArrayList<>(this.list);
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);
}
```
这样修改后,每次添加途经点的时候,都会把之前的途经点和新添加的途经点一起添加到 List 中,然后再调用 addViaNodes 方法,就可以实现添加多个途经点的功能了。
阅读全文