我尝试使用适用于 Android 100.5.0 的 ArcGIS Runtime SDK 创建离线地图。我按照指南https://developers.arcgis.com/android/latest/guide/take-map-offline-preplanned.htm遵循预先计划的工作流程. 我在 ArcGISOnline 中创建 mapAreas 并尝试从设备下载它们。我想获得一个离线地图,其中包含所有 mapAreas,就像在应用程序 maps.me 中一样(在一张大地图上,您已经下载了具有更详细细节的区域),但我得到的是从上次下载的区域制作的离线地图。所以我创建了具有比例世界的mapArea“欧洲” - 城市和具有比例城市的mapArea“柏林” - 建筑物(底图-openstreetmaps,没有要素图层)并成功下载它们,在文件夹中看到2个tpk文件,但是mobile_map.mmpk和package.info 文件仅包含与上次加载区域相关的数据。是否有可能得到我想要的,将 tpk 文件合并到一张地图中?
我在 Kotlin 中的代码:
val portal = Portal("https://www.arcgis.com/", false)
val portalItem = PortalItem(portal, itemID)
val offlineMapTask = OfflineMapTask(portalItem)
//get all of the preplanned map areas in the web map
val mapAreasFuture = offlineMapTask.preplannedMapAreasAsync
mapAreasFuture.addDoneListener {
try {
// get the list of areas
val mapAreas = mapAreasFuture.get()
val directory = getDirectory()
prepareDir(directory)
// loop through the map areas
var i = 0
for (mapArea in mapAreas) {
mapArea.loadAsync()
mapArea.addDoneLoadingListener {
val downloadJob = offlineMapTask.downloadPreplannedOfflineMap(mapArea, directory)
downloadJob.start()
downloadJob.addJobDoneListener {
i++
if (i == mapAreas.size) {
val offlineMapPackage = MobileMapPackage(path)
offlineMapPackage.addDoneLoadingListener({
if (offlineMapPackage.getLoadStatus() === LoadStatus.LOADED) {
val mobileMap = offlineMapPackage.getMaps().get(0)
myCompletionFuncToShowMap(mobileMap)
} else {
println("PACKAGING FAILED")
}
})
offlineMapPackage.loadAsync()
}
}
}
}
} catch (e: InterruptedException) {
e.printStackTrace()
} catch (e: Exception) {
e.printStackTrace()
}