目前我主要在离线模式下开发OSMDroid地图。一切顺利,只是我试图使用RoadManager在离线状态下缓存路线。路线可以在线显示但是离线时它显示为一条直线,而不是像在线一样的路线。以下是道路管理员的代码,除了离线外,还可以看到路线。如果您有任何帮助,那将是我的荣幸
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());
我希望在缓存管理器中实现的代码
List<GeoPoint> roadPoints = roadOverlay.getPoints();
Log.d(TAG, "onCreate: road Points -> length:" + roadPoints.size());
CacheManager但仅适用于地理位置,无法将路标设置为参数
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);
}
});
答案 0 :(得分:1)
CacheManager是关于磁贴的缓存。它不处理叠加。
您必须自己实施。对于标记和折线(和多边形),使用KML API并将结果存储在KML文件中可能是一个简单的解决方案。看看OSMBonusPack tutorial pages。