private final 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); android.util.Log.d("TAGAA", "addWaypoint: 数据 "+list.toString()+"\n"+list.size()); //设置最大途径点的个数(支持4~18个) BaiduNaviManagerFactory.getCommonSettingManager().setViaPointCount(4); } 以上代码中,添加了一个途经点后,打印的数据长度是1,添加第二个后,数据长度是2,但是在导航中显示的途经点是1和3,没有途经点2, addViaNodes()这个调用方法中的参数就是void addViaNodes(List<BNRoutePlanNode> var1); 这个怎么让我添加的数据显示正常,也就是添加第二个途径点的时候,就是显示的途经点2。帮我写一下
时间: 2024-02-21 12:59:02 浏览: 90
看到你的代码,我发现你的问题可能是因为每次添加途经点时,都将之前已经添加的途经点全部添加了一遍,导致之前已经添加的途经点被重复添加了。我建议你可以将 `addViaNodes(list)` 放在 if 判断语句的外面,只在新加途经点的时候才将新增的途经点添加至导航管理器,代码如下:
```java
private final 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);
android.util.Log.d("TAGAA", "addWaypoint: 数据 "+list.toString()+"\n"+list.size());
}
//设置最大途径点的个数(支持4~18个)
BaiduNaviManagerFactory.getCommonSettingManager().setViaPointCount(4);
}
```
这样就可以避免重复添加途经点的问题了。
阅读全文