2017-11-07 7 views
0

derzeit im Entwickeln einer OSMDroid-Karte hauptsächlich im Offline-Modus. Alles ist in Ordnung, außer dass ich versuche, die Route offline mit RoadManager zu cachen. Die Route kann online angezeigt werden, aber offline erscheint sie als gerade Linie, nicht wie im Online-Modus. Unten ist der Code für den Straßenmanager, die Route kann nur offline gesehen werden. Es wäre eine große Ehre für mich, wenn jeder von u Hilfe cnRoadOverlay im CacheManager OSMDroid

Roadmanager Code

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

Codes, die i

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

Cachemanager in Cache-Manager implementiert werden soll aber nur für Geopoints, nicht in der Lage, Straßenpunkte als Parameter zu setzen

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

    }); 

Antwort

1

Im CacheManager geht es um das Caching von Kacheln. Overlays werden nicht behandelt.

Sie müssen dies selbst implementieren. Bei Markern und Polylinien (und Polygonen) kann die Verwendung der KML-API und das Speichern des Ergebnisses in einer KML-Datei eine einfache Lösung sein. Schauen Sie sich OSMBonusPack tutorial pages an.

+0

bedeutet es, dass ich KML verwenden muss, damit die Route offline angezeigt werden kann? – warabino

+0

hi, jetzt kann ich die kml-Datei speichern, aber wie soll ich die KML-Datei importieren, damit die Datei bei der Offlinedatei verwendet wird, weil sie die Route bereits speichert. Hier ist mein Code: – warabino

+0

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