【发布时间】:2019-12-09 20:29:46
【问题描述】:
尽管使用了 setVisibility(false),但折线不会清除
我们创建了一个折线数组列表,并在添加新折线时添加到其中。但是我们想在不清除地图的情况下清除所有折线,并没有成功。 我们尝试通过折线数组使用 setPoints 选项,但我们无法从数组列表中检索所需的折线。它总是给出 IndexOutOfBounds 错误。
ArrayList<Polyline> polylines=new ArrayList<Polyline>();
ArrayList points = null;
Polyline p=null;
int counter=0;
for (int i = 0; i < result.size(); i++) {
counter++;
points = new ArrayList();
lineOptions = new PolylineOptions();
trial1=new ArrayList<ArrayList<LatLng>>();
List<HashMap<String, String>> path = result.get(i);
for (int j = 0; j < path.size(); j++) {
HashMap<String, String> point = path.get(j);
double lat = Double.parseDouble(point.get("lat"));
double lng = Double.parseDouble(point.get("lng"));
LatLng position = new LatLng(lat, lng);
points.add(position);
}
trial1.add(points);
lineOptions.addAll(points);
lineOptions.width(12);
lineOptions.color(Color.RED);
lineOptions.geodesic(true);
lineOptions.clickable(true);
if(points.size()!=0 && points!=null && lineOptions!=null) {
p = mMap.addPolyline(lineOptions);
polylines.add(p);
}
在主函数中:
for (int required=0;required<Points.size();required++) {
if(Points.get(required)!=FINAL.get(required)){
polylines.get(required).setVisible(false);
polylines.set(required,null);
}
drawPolylines(Points.get(required));
}
FINAL 是旧位置,Points 是新位置数组。
它总是会导致:
java.lang.NullPointerException: Attempt to invoke virtual method 'void com.google.android.gms.maps.model.Polyline.setVisible(boolean)' on a null object reference
另一个尝试是 remove() 选项。
for(int ccc=0;ccc<polylines.size();ccc++) {
Polyline theta=polylines.get(ccc); //removing all the polylines in the array
theta.remove();
}
polylines.clear();
for (required=0;required<Points.size();required++) {
if(Points.get(required)!=FINAL.get(required))
drawPolylines(Points.get(required)); //drawing polylines again
}
但这并没有清除任何折线,而是重新绘制了现有的折线。
【问题讨论】:
标签: java android api maps polyline