2016-06-09 17 views
2

erstellen ich Google-Karte mit Google-Richtung verwende ich Klasse http://www.akexorcist.com/2015/12/google-direction-library-for-android-en.html , dass jemand für Google-Richtung bauen. Alles ist gut, und die Polylinie zeigen auf der Karte. aber wenn ich eine andere Richtung wie Laufrichtung oder Fahrtrichtung anklicken muss, sehe ich 2 Polylinien auf der Karte und möchte nur die aktuelle Polylinie sehen.müssen letzte Polylinie entfernen und aktuelle Polylinie

Hier erstelle ich die Polylinie und entfernen Sie die Polylinie am Anfang, dann die Polylinie überhaupt nicht zu zeigen. ich will das nicht. Ich möchte, wenn ich auf die Schaltfläche "sonst" klicke, wird die Polylinie entfernt. Ich versuche zu setzen, polyline.remove(); auf die Schaltfläche klicken Sie andernfalls aber das Problem, dass, wenn, polyline.remove(); außerhalb der Klammern, polyline.remove(); entferne die Polylinie nicht. Ich muss polyline.remove() aufrufen; wenn ich auf einen anderen Knopf klicke, aber ich stecke fest. hier ist der Code:

switch (direction.getStatus()) { 
     case RequestResult.OK: 
      Route route = direction.getRouteList().get(0); 

      Leg leg = route.getLegList().get(0); 

      ArrayList<LatLng> pointList = leg.getDirectionPoint(); 

      List<Step> stepList = direction.getRouteList().get(0).getLegList().get(0).getStepList(); 
      ArrayList<PolylineOptions> polylineOptionList = DirectionConverter.createTransitPolyline(this, stepList, 5, Color.RED, 3, Color.BLUE); 
      for (PolylineOptions polylineOption : polylineOptionList) { 
       polyline = mMap.addPolyline(polylineOption); 
       polyline.remove(); 

      } 

       break; 

2.when i-Button in Fuß klicken möchte ich den Transit Linienzug entfernen, die wir haben nur die ganze Zeit, nur eine Polylinie in der Karte. wie mache ich das?

bWalking.setOnClickListener(new View.OnClickListener() { 
             @Override 
             public void onClick(View v) { 
              if (locationGpsLatLng == null) { 
               Toast.makeText(MapsActivity.this, "Need GPS location", `enter code here`Toast.LENGTH_SHORT).show();{ 
                return; 
               } 
              } 
              if (markerLocation == null) { 
               Toast.makeText(MapsActivity.this, "Type on marker bathroom for destination", Toast.LENGTH_SHORT).show(); 
              } else { 
              sendRequestWalkingDirection(); 


             } 
            }; 
            private void sendRequestWalkingDirection() { 
             GoogleDirection.withServerKey(APIKEY) 
               .from(locationGpsLatLng) 
               .to(markerLocation) 
               .transportMode(TransportMode.WALKING) 
               .execute(new DirectionCallback() { 
                @Override 
                public void onDirectionSuccess(Direction direction, String rawBody) { 
                 Log.d("onDirectionSuccess", "status: " + direction.getStatus()); 
                 requestOk(direction, rawBody); 
                 mMap.addMarker(new MarkerOptions().position(locationGpsLatLng).draggable(false).icon(BitmapDescriptorFactory 
                   .defaultMarker(BitmapDescriptorFactory.HUE_RED))); 
                 CameraUpdate cameraUpdate = CameraUpdateFactory.newLatLngZoom(locationGpsLatLng, 15); 
                 mMap.animateCamera(cameraUpdate); 
                } 
                @Override 
                public void onDirectionFailure(Throwable t) { 
                 return; 
                } 
               }); 
            } 
    }); 

Antwort

1

Sie können nach dem Klicken auf mMap.clear(); anrufen. Diese Methode wird alle Polylinien entfernen.

GoogleMap class documentation

UPDATE

Sie müssen die Polylinien zu einem gewissen Liste speichern und sie dann entfernen, wenn Sie die Taste

private List<Polyline> polylines; 

Fügen Sie die Polylinien

auf der Liste angeklickt wird
polylines = new ArrayList<>(); 
for (PolylineOptions polylineOption : polylineOptionList) { 
    polyline = mMap.addPolyline(polylineOption); 
    polylines.add(polyline); 
} 

Nach Tastendruck

for (Polyline polyline : polylines) { 
    polyline.remove(); 
} 
+0

mMap.clear(); Löschen Sie alle die Karte enthalten alle meine Markierungen ist nicht gut für mich –

+0

Ich habe meine Antwort – Wilik

+0

ihre Arbeit aktualisiert Vielen Dank. du bist großartig!! –

Verwandte Themen