2016-06-17 14 views
2

Ich benutze diesen Code, um eine Fahrtroute auf einer Google-Karte anzuzeigen. Das Problem ist, dass, wenn ich mehrere Polylinien mit verschiedenenFarben hinzufügen möchte, bekomme ich alle Polylinien mit der gleichen Farbe, die die letzte in der for-Schleife verwendet wird.Mehrere Polylinien mit verschiedenen Farben auf einer Karte anzeigen

public void requestDirection(final LatLng nUserCurrentLoc, final LatLng objectiveLatLng) { 
    Toast.makeText(getBaseContext(), "Requesting direction, just a moment...", Toast.LENGTH_SHORT).show(); 
    GoogleDirection.withServerKey(SERVER_API_KEY) 
      .from(nUserCurrentLoc) 
      .to(objectiveLatLng) 
      .transportMode(TransportMode.DRIVING) 
      .execute(this); 

    uiHandler.postDelayed(new Runnable() { 
     @Override 
     public void run() { 

      positionCamera(nUserCurrentLoc, objectiveLatLng); 
     } 
    }, 2800); 
} 
@Override 
public void onDirectionSuccess(Direction direction, String rawBody) { 

    if (direction.isOK()) { 
     Toast.makeText(getBaseContext(), "Routes are marked successfully...", Toast.LENGTH_SHORT).show(); 
     final ArrayList<LatLng> directionPositionList = direction.getRouteList().get(0).getLegList().get(0).getDirectionPoint(); 
     int zzzz = -16711681; 
     for(int i =0; i<colorList.size(); i++){ 
      String pls = (String)colorList.get(i); 

      if (pls.equals("BLUE")) zzzz = -16711681; 
      else if (pls.equals("RED")) zzzz = -65281; 
      else if (pls.equals("GREEN")) zzzz = -256; 
      else if (pls.equals("BLACK")) zzzz = -7829368; 
      else if (pls.equals("DKGRAY")) zzzz = -3355444; 

      itineraryLines = mMap.addPolyline(DirectionConverter.createPolyline(getApplicationContext(), 
        directionPositionList, 5, zzzz)); 
     } 
    }else { 
     Toast.makeText(getBaseContext(), "Routes are suspicious!", Toast.LENGTH_SHORT).show(); 
    } 
} 
@Override 
public void onDirectionFailure(Throwable t) { 
    Toast.makeText(getBaseContext(), "No routes found!", Toast.LENGTH_SHORT).show(); 
} 

color enthält schwarz und grün, aber wenn die Routen angezeigt bekomme ich sie beide mit der Farbe in Bezug auf GRÜN (ich versuchte mehrere Kombination, bekomme ich immer die Farbe der letzten Schleife). Irgendwelche Ideen, um das zu lösen?

+0

Könnten Sie Ihre 'DirectionConverter' Klasse posten? – antonio

Antwort

1

Nun, ich hatte das gleiche Problem, ich hatte mehrere Pfade mit gemeinsamen Region in ihnen. Was ich versuchte, den gewählten Pfad rote Farbe und alles andere Grau, aber in der gemeinsamen Region von zwei Polylinien ich bekam die Farbe der zuletzt gezogenen Polylinie.Ich habe meine Lösung funktioniert, indem ich die Polylinien entfernt und neu gezeichnet habe. Und die Polylinie, die oben angezeigt werden musste, wurde zuletzt gezeichnet.

public void getList(Direction direction,int a) 
{ 
    PolylineOptions abc=new PolylineOptions(); 

    ArrayList<LatLng> directionPositionList=new ArrayList<>(); 
    if(lines.size()>0) 
    { 

     for(int i=0;i<lines.size();i++) 
     { 
      lines.get(i).remove(); 
     } 
     //map.clear(); 
     lines.clear(); 
     line=null; 
    } 


for (int i = 0; i < direction.getRouteList().size(); i++) 
{ 
    line = null; 

    for (int j = 0; j < direction.getRouteList().get(i).getLegList().size(); j++) 
    {directionPositionList = direction.getRouteList().get(i).getLegList().get(j).getDirectionPoint();} 

    if (i != a) 
    { 

      line = map.addPolyline(DirectionConverter.createPolyline(getContext(), directionPositionList, 5, Color.GRAY)); 
     lines.add(line); 
     line.setClickable(true); 
    } 

    if(i==a) 
    { 
     line = map.addPolyline(DirectionConverter.createPolyline(getContext(), directionPositionList, 5, Color.TRANSPARENT)); 
     test=directionPositionList; 
     lines.add(line); 
     line.remove(); 
     index=i; 
    } 
} 
    line = map.addPolyline(DirectionConverter.createPolyline(getContext(), test, 5, Color.RED)); 
    lines.set(index,line); 
    line.setClickable(true); 
} 

Ich hoffe, es hilft.

Verwandte Themen