Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/321.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 从地图中删除多段线_Java_Android_Google Maps_Polyline - Fatal编程技术网

Java 从地图中删除多段线

Java 从地图中删除多段线,java,android,google-maps,polyline,Java,Android,Google Maps,Polyline,我正在尝试在创建多段线之前删除以前创建的多段线,这是我所拥有的: protected void fazerCaminho(ArrayList<HashMap<String, String>> listaPolylines) { if (line == null) { for (Map polyline : listaPolylines) { List<LatLng> decodedPath = PolyU

我正在尝试在创建多段线之前删除以前创建的多段线,这是我所拥有的:

    protected void fazerCaminho(ArrayList<HashMap<String, String>> listaPolylines) {
    if (line == null) {
        for (Map polyline : listaPolylines) {
            List<LatLng> decodedPath = PolyUtil.decode((String) polyline.get("points"));
            line = mMap.addPolyline(new PolylineOptions()
                    .width(3)
                    .color(Color.rgb(25, 151, 152))
                    .geodesic(true)
                    .addAll(decodedPath));
        }

    } else {
        line.remove();
        for (Map polyline : listaPolylines) {
            List<LatLng> decodedPath = PolyUtil.decode((String) polyline.get("points"));
            line = mMap.addPolyline(new PolylineOptions()
                    .width(3)
                    .color(Color.rgb(25, 151, 152))
                    .geodesic(true)
                    .addAll(decodedPath));
        }
    }
}
受保护的void fazerCaminho(ArrayList listaPolylines){
如果(行==null){
用于(地图多段线:listaPolylines){
List decodedPath=PolyUtil.decode((字符串)polyline.get(“点”);
line=mMap.addPolyline(新的PolylineOptions()
.宽度(3)
.color(color.rgb(25151152))
.测地线(真)
.addAll(decodedPath));
}
}否则{
行。删除();
用于(地图多段线:listaPolylines){
List decodedPath=PolyUtil.decode((字符串)polyline.get(“点”);
line=mMap.addPolyline(新的PolylineOptions()
.宽度(3)
.color(color.rgb(25151152))
.测地线(真)
.addAll(decodedPath));
}
}
}

line.remove不起作用,此解决方案在以前的版本中起作用,但当时我没有for方法,我做错了什么?

创建一个
列表来存储您的
多段线
并在添加新的多段线之前清除它们:

private List<Polyline> lines = new ArrayList<>();

// ...

private void removeLines() {
    for (Polyline line : lines) {
        line.remove();
    }
    lines.clear();
}

// ...

protected void fazerCaminho(ArrayList<HashMap<String, String>> listaPolylines) {
    removeLines();

    for (Map polyline : listaPolylines) {
        List<LatLng> decodedPath = PolyUtil.decode((String) polyline.get("points"));
        lines.add(mMap.addPolyline(new PolylineOptions()
                .width(3)
                .color(Color.rgb(25, 151, 152))
                .geodesic(true)
                .addAll(decodedPath)));
    }
}
private List line=new ArrayList();
// ...
私有无效删除(){
用于(多段线:直线){
行。删除();
}
行。清除();
}
// ...
受保护的void fazerCaminho(ArrayList listaPolylines){
removeLines();
用于(地图多段线:listaPolylines){
List decodedPath=PolyUtil.decode((字符串)polyline.get(“点”);
lines.add(mMap.addPolyline(新的PolylineOptions)()
.宽度(3)
.color(color.rgb(25151152))
.测地线(真)
.addAll(decodedPath));
}
}

您只删除最后一行检查此可能的代码副本删除这些行大约一秒钟,然后重新添加它们,您希望的行为是什么?完全删除前一条路径,只保留最后一条路径