我尝试构建应用程序,它显示带折线的路线,我需要添加和删除带有条件的折线,来自等于 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));
}
}
}
答案 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")){
...
}