0

目前我主要在离线模式下开发 OSMDroid 地图。一切都很好,除了我试图使用 RoadManager 离线缓存路线。路线可以在线显示,但离线显示为直线,而不是在线时的路线。下面是道路管理器的代码,除了离线可以看到路线cn。如果你们中的任何人提供帮助,对我来说将是莫大的荣幸

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

    });
4

1 回答 1

1

CacheManager 是关于缓存切片的。它不处理覆盖。

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

于 2017-11-07T21:55:40.673 回答