2013-02-04 2 views
1

다음 튜토리얼 (http://code.google.com/p/osmbonuspack/wiki/Tutorial_1)에서 얻은 코드를 사용하여 경로 오버레이를 OSM 드로이드 맵에 배치하는 데 다음 코드를 사용하지만 사용자 정의 메서드로 약간 수정 한 코드를 사용합니다. OnCrerate 메소드.튜토리얼을 수행 할 때 OSMDroid 라우팅 문제

이제지도에서 녹색 오버레이가 만들어지고 생성됩니다. 그러나 For 루프 이후에는 문제가 있습니다. 이는 road.mNodes가 항상 크기가 0이므로 명령어가 내려 오지 않음을 나타냅니다.

우연히도 RoadNodes 및 RoadItems를 검사했으며 둘 다 크기가 0입니다. 즉, 거품 (ExtendedOVerlayItems)이 경로에 표시되지 않습니다.

모든 조언을 주시면 감사하겠습니다.

//====================================================================================================== 
/** 
* Add a route overlay between two geopoints with Bubble overlays on the route points. 
* 
* @param startPoint Route start. 
* @param endPoint Route end. 
*// 
//====================================================================================================== 
public void addRouteOverlay(GeoPoint startPoint, GeoPoint endPoint) 
{ 
    //1 Routing via road manager 
    RoadManager roadManager = new OSRMRoadManager(); 
    roadManager.addRequestOption("routeType=bicycle"); 

    //Then, retreive the road between your start and end point: 
    ArrayList<GeoPoint> waypoints = new ArrayList<GeoPoint>(); 
    waypoints.add(startPoint); 
    waypoints.add(endPoint); //end point 

    Road road = roadManager.getRoad(waypoints); 

    // then, build an overlay with the route shape: 
    PathOverlay roadOverlay = RoadManager.buildRoadOverlay(road, map.getContext()); 
    roadOverlay.setColor(Color.GREEN); 


    //Add Route Overlays into map 
    map.getOverlays().add(roadOverlay); 

    map.invalidate();//refesh map 

    Drawable marker = ctx.getResources().getDrawable(R.drawable.map_marker_blue); 

    final ArrayList<ExtendedOverlayItem> roadItems = 
       new ArrayList<ExtendedOverlayItem>(); 
      ItemizedOverlayWithBubble<ExtendedOverlayItem> roadNodes = 
       new ItemizedOverlayWithBubble<ExtendedOverlayItem>(ctx, roadItems, map); 


     for (int i=0; i<road.mNodes.size(); i++) 
     { 
       RoadNode node = road.mNodes.get(i); 
       ExtendedOverlayItem nodeMarker = new ExtendedOverlayItem("Step "+i, "", node.mLocation, ctx); 
       nodeMarker.setMarkerHotspot(OverlayItem.HotspotPlace.CENTER); 
       nodeMarker.setMarker(marker); 
       roadNodes.addItem(nodeMarker); 

       nodeMarker.setDescription(node.mInstructions); 
       nodeMarker.setSubDescription(road.getLengthDurationText(node.mLength, node.mDuration)); 
       Drawable icon = ctx.getResources().getDrawable(R.drawable.ic_continue); 
       nodeMarker.setImage(icon); 

     }//end for 

     map.getOverlays().add(roadNodes); 



}//=================================================================================================== 
+0

앤드류 솔루션을 찾았습니까? – user1840255

답변

0

오늘이 문제가 발생하여이를 해결했습니다. 문제는 이전 버전의 보너스 팩에 있습니다. osmbonuspack_v3.8.jar에서 osmbonuspack_v4.1.jar 버전으로 업데이트했고 문제가 해결되었습니다. 나는 또한 OSRMRoadManager()와는 반대로 MapQuestRoadManager() 옵션을 사용했다. 그러나 이것을 할 때, ExtendedOverlayItem의 onOpen() 메소드와 같이 보너스 팩에서 변경된 몇 가지 슈퍼 타입 메소드가 변경되었다는 것을 염두에 두어야 할 가치가있다. 호출 후에 캐스팅 될 매개 변수

final RoadManager manager= new MapQuestRoadManager(); 
manager.addRequestOption("routeType=fastest"); 
+0

필자는 이것을 테스트하지 않았으므로 결국 최종 응용 프로그램에서이 기능을 개발하지 못했습니다. 그러나 당신의 제안은 그럴듯 해 보입니다. –

관련 문제