2017-11-07 23 views
0

현재 주로 오프라인 모드에서 OSMDroid 맵을 개발 중입니다. RoadManager를 사용하여 오프라인에서 경로를 캐싱하려고 시도하는 것을 제외하고는 모든 것이 정상입니다. 경로는 온라인으로 표시 될 수 있지만 오프라인의 경우 온라인 상태와 마찬가지로 경로가 아닌 직선으로 나타납니다. 아래는 도로 관리자를위한 코드이며, 오프라인을 제외하고는 경로 cn이 표시됩니다. U의 도움을 내가 캐시 관리자CacheManager의 RoadOverlay OSMDroid

List<GeoPoint> roadPoints = roadOverlay.getPoints(); 
    Log.d(TAG, "onCreate: road Points -> length:" + roadPoints.size()); 

CacheManager에서 구현 될하려는

RoadManager 코드

RoadManager roadManager = new MapQuestRoadManager("bOqEG6oonVKVMJGQj9GOVPBEvgcfUofu"); 
     roadManager.addRequestOption("routeType=shortest"); 

    Road road = roadManager.getRoad(geopoints); 
    Polyline roadOverlay = RoadManager.buildRoadOverlay(road); 
    map.getOverlays().add(roadOverlay); 
    List<GeoPoint> roadPoints = roadOverlay.getPoints(); 
    Log.d(TAG, "onCreate: road Points -> length:" + roadPoints.size()); 

코드를 cn을 경우 그것은 나에게 큰 영광이 될 것입니다 geopoints에 대해서만 매개 변수로 도로 점을 설정할 수 없습니다

CacheManager cacheManager = new CacheManager(map); 

cacheManager.downloadAreaAsyncNoUI(getApplicationContext(),geopoints, 10, 15, new CacheManager.CacheManagerCallback() { 
public static final String TAG = "CacheManagerCallback"; 
     @Override 
     public void onTaskComplete() { 
      Log.d(TAG, "onTaskComplete: "); 

     } 

     @Override 
     public void updateProgress(int progress, int currentZoomLevel, int zoomMin, int zoomMax) { 
      Log.d(TAG, "updateProgress: " + progress); 

     } 

     @Override 
     public void downloadStarted() { 
      Log.d(TAG, "downloadStarted: "); 
     } 

     @Override 
     public void setPossibleTilesInArea(int total) { 
      Log.d(TAG, "setPossibleTilesInArea: " + total); 
     } 

     @Override 
     public void onTaskFailed(int errors) { 
      Log.d(TAG, "onTaskFailed: " + errors); 
     } 

    }); 

답변

1

CacheManager는 타일 캐싱에 관한 것입니다. 오버레이는 처리하지 않습니다.

직접 구현해야합니다. 마커 및 폴리 라인 (및 폴리곤)의 경우 KML API를 사용하여 결과를 KML 파일에 저장하는 것이 간단한 해결책 일 수 있습니다. OSMBonusPack tutorial pages을보십시오.

+0

오프라인에서 경로 cn이 표시되도록 KML을 사용해야한다는 의미입니까? – warabino

+0

안녕하세요, 이제는 kml 파일을 저장할 수 있지만 KML 파일을 가져올 때 파일을 오프라인으로 사용할 때 이미 경로를 저장하고 있기 때문에 어떻게해야합니까? 여기 내 코드 : – warabino

+0

'KmlDocument kmlDocument = new KmlDocument(); kmlDocument.mKmlRoot.addOverlay (roadOverlay, kmlDocument); 파일 localFile = kmlDocument.getDefaultPathForAndroid ("my_route.kml"); kmlDocument.saveAsKML (localFile); kmlDocument.parseKMLFile (localFile); FolderOverlay kmlOverlay = (FolderOverlay) kmlDocument.mKmlRoot.buildOverlay (map, null, null, kmlDocument); map.getOverlays(). add (kmlOverlay); BoundingBox bb = kmlDocument.mKmlRoot.getBoundingBox(); map.getController(). setCenter (bb.getCenter());' – warabino