2016-06-17 1 views
2

Google지도에 운전 경로를 표시하려면이 코드를 사용하고 있습니다. 문제는 이 다른 여러 폴리 라인을 추가 할 때마다색상입니다. 사용 된 for 루프의 마지막 색상 인 모든 폴리 라인이 동일한 색상으로 표시됩니다.지도에 여러 색상으로 여러 폴리 라인을 표시합니다.

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(); 
} 

이 colorList는 검은 색과 녹색을 포함하고 있지만 경로가 표시 될 때 i가 녹색으로 색상 상대적으로 그들 모두를 얻을 수 (내가, 내가 항상 마지막 루프의 색상을 얻을 여러 조합을 시도했다). 아이디어를 해결하는 방법은 무엇입니까?

+0

'DirectionConverter' 클래스를 게시 할 수 있습니까? – antonio

답변

1

글쎄, 나는 같은 문제에 직면했다. 나는 선택된 경로를 붉은 색으로, 다른 모든 것은 회색으로 만들려고 시도했지만, 두 개의 폴리선의 공통 영역에서 마지막으로 그려진 폴리 라인의 색상. 폴리 라인을 제거하고 다시 그려서 내 솔루션을 작동 시켰습니다. 그리고 맨 위에 표시해야하는 폴리선이 마침내 그려졌습니다.

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); 
} 

희망이 있습니다.