CacheManager OSMDroid中的RoadOverlay

时间:2017-11-07 06:11:16

标签: android osmdroid cachemanager

目前我主要在离线模式下开发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);
        }

    });

1 个答案:

答案 0 :(得分:1)

CacheManager是关于磁贴的缓存。它不处理叠加。

您必须自己实施。对于标记和折线(和多边形),使用KML API并将结果存储在KML文件中可能是一个简单的解决方案。看看OSMBonusPack tutorial pages