2017-11-07 11 views
0

現在、主にオフラインモードでOSMDroidマップを開発中です。 RoadManagerを使用してオフラインで経路をキャッシュしようとしている以外はすべて問題ありません。ルートはオンラインで表示することができますが、オフラインではオンラインのようなルートのラインではなく、直線として表示されます。以下は道路管理者向けのコードで、オフライン以外のルートcnを見ることができます。 Uの任意のiがキャッシュマネージャに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の場合、それは私にとって大きな名誉だろうジオポイントの場合にのみ、ロードポイントをパラメータとして設定できません

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ファイルをインポートするので、ファイルが使用されているときに、それはすでにルートを保存bcause使用されます。ここに私のコード: – warabino

+0

'KmlDocument kmlDocument =新しい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

関連する問題