如何使用条件添加和删除折线

时间:2018-02-23 22:12:35

标签: java android

我尝试构建应用程序,它显示带折线的路线,我需要添加和删除带有条件的折线,来自等于 inicioR 的字符串用于show,以及 finR 删除

我的activity.java的代码片段下方。我试着像

那样做
@Override
public void onDirectionFinderSuccess(List<Route> routes) {
    progressDialog.dismiss();
    polylinePaths = new ArrayList<>();
    originMarkers = new ArrayList<>();
    waypoints = new ArrayList<>();
    destinationMarkers = new ArrayList<>();

    for (Route route : routes) {
        //mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(route.startLocation, 16));
        ((TextView) findViewById(R.id.tvDuration)).setText(route.duration + " Min");
        ((TextView) findViewById(R.id.tvDistance)).setText(route.distance + " Kms");


        PolylineOptions polylineOptions = new PolylineOptions().
                geodesic(true).
                color(Color.BLUE).
                width(10);

        for (int i = 0; i < route.points.size(); i++)
            polylineOptions.add(route.points.get(i));



        if (estado == "inicioR") {
            polylinePaths.add(mMap.addPolyline(polylineOptions));
        }else if (estado == "finR"){
            polylinePaths.remove(mMap.addPolyline(polylineOptions));
        }

    }
}

2 个答案:

答案 0 :(得分:0)

我没有运行它,但它应该可以运行

if (estado == "inicioR") {
    polylinePaths.add(mMap.addPolyline(polylineOptions));
}else if (estado == "finR"){
    if (polylinePaths != null && !polylinePaths.isEmpty()) {
        polylinePaths.get(polylinePaths.size()-1).remove(); // remove the lastest line you added. 
        polylinePaths.remove(polylinePaths.size()-1); // remove the lastest line record from ArrayList.
    }
}

答案 1 :(得分:0)

要删除折线,您可以使用ccmake方法。

在您的情况下,您需要使用String.equals()方法正确检查字符串相等性。使用Polyline.remove()在逻辑上是不正确的,因为它将测试String的引用。阅读更多How do I compare strings in Java?

因此,您的代码应该是这样的:

==

之后,要删除折线,您需要先删除折线对象,然后从列表中删除折线。

if (estado.equals("inicioR")) {
   ..
} else if (estado.equals("finR")){
   ...
}