簡體   English   中英

在Google地圖上刪除以前的路線

[英]Remove previous direction route on Google Maps

我正在使用jd-alexander圖書館在Google地圖上顯示路線,而我的問題是,當我請求其他路線時,會創建新路線,但不會刪除以前創建的路線。 我要刪除以前的路線,然后顯示新路線。

@Override
public void onRoutingSuccess(ArrayList<Route> routeArrayList, int i) {

    //code to add route to map here.
     polylines = new ArrayList<>();
     if (polylines.size() > 0) {
         erasePolylines();
     }
         polylines = new ArrayList<>();
         //add route(s) to the map.
     polylines.clear();
         for (i = 0; i < routeArrayList.size(); i++) {

             //In case of more than 5 alternative routes
             int colorIndex = i % COLORS.length;

             PolylineOptions polyOptions = new PolylineOptions();
             polyOptions.color(getResources().getColor(COLORS[colorIndex]));
             polyOptions.width(10 + i * 3);
             polyOptions.addAll(routeArrayList.get(i).getPoints());
             Polyline polyline = mMap.addPolyline(polyOptions);
             polylines.add(polyline);

             Toast.makeText(getApplicationContext(), "Route " + (i + 1) + ": distance - " + routeArrayList.get(i).
                     getDistanceValue() + ": duration - " + routeArrayList.get(i).getDurationValue(), Toast.LENGTH_SHORT).show();
         }
 }

private void erasePolylines(){
    for(Polyline line : polylines){
        line.remove();
    }
    polylines.clear();
}

我怎樣才能解決這個問題?

polylines = new ArrayList<>();
 if (polylines.size() > 0) {
     for (Polyline poly : polylines) {
         poly.remove();
     }
     erasePolylines();
 }
     polylines = new ArrayList<>();
     //add route(s) to the map.
 polylines.clear();
     for (i = 0; i < routeArrayList.size(); i++) {

         //In case of more than 5 alternative routes
         int colorIndex = i % COLORS.length;

         PolylineOptions polyOptions = new PolylineOptions();
         polyOptions.color(getResources().getColor(COLORS[colorIndex]));
         polyOptions.width(10 + i * 3);
         polyOptions.addAll(routeArrayList.get(i).getPoints());
         Polyline polyline = mMap.addPolyline(polyOptions);
         polylines.add(polyline);

         Toast.makeText(getApplicationContext(), "Route " + (i + 1) + ": distance - " + routeArrayList.get(i).
                 getDistanceValue() + ": duration - " + routeArrayList.get(i).getDurationValue(), Toast.LENGTH_SHORT).show();
     }
 }

您的代碼還可以,除了這里:

//You're initializing your list "POLILYNES" and trying remove empty list, Remove the 
//lines I commented.

@Override
public void onRoutingSuccess(ArrayList<Route> routeArrayList, int i) {

//code to add route to map here.
 polylines = new ArrayList<>(); // DELETE THIS LINE
 if (polylines.size() > 0) {
     erasePolylines();
 }
     polylines = new ArrayList<>(); // DELETE THIS LINE
     //add route(s) to the map.
 polylines.clear();

    ...
 }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM