【问题标题】:RoadOverlay in CacheManager OSMDroidCacheManager OSMDroid 中的 RoadOverlay
【发布时间】:2017-11-07 06:11:15
【问题描述】:

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

    });

【问题讨论】:

    标签: android osmdroid cachemanager


    【解决方案1】:

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

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

    【讨论】:

    • 是不是说我需要使用KML才能在离线时显示路线cn?
    • 嗨,现在我可以存储 KML 文件,但是我将如何导入 KML 文件,以便在离线时使用该文件,因为它已经保存了路线。这是我的代码:
    • KmlDocument kmlDocument = new KmlDocument(); kmlDocument.mKmlRoot.addOverlay(roadOverlay, kmlDocument); File 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());
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-27
    • 2015-04-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多