在cordova应用程序中更改mabox gl cordova脱机地图的地图样式

在cordova应用程序中更改mabox gl cordova脱机地图的地图样式,cordova,offline,mapbox-gl-js,mapbox-gl,mbtiles,Cordova,Offline,Mapbox Gl Js,Mapbox Gl,Mbtiles,我用Cordova创建了一个应用程序,它有一个带矢量分幅的离线地图。我使用离线地图 目前,离线地图的mbtiles文件集成在APK中,离线地图工作正常。但现在我想增加在离线和在线地图之间切换的可能性。通过在地图上使用setStyle()从集成的脱机地图切换到联机地图。但是,当我尝试将样式设置回脱机贴图时,会出现以下错误: 错误:sources.openmatiples.type:应为[vector、raster、raster dem、geojson、video、image]中的一个,找到“mbt

我用Cordova创建了一个应用程序,它有一个带矢量分幅的离线地图。我使用离线地图

目前,离线地图的mbtiles文件集成在APK中,离线地图工作正常。但现在我想增加在离线和在线地图之间切换的可能性。通过在地图上使用setStyle()从集成的脱机地图切换到联机地图。但是,当我尝试将样式设置回脱机贴图时,会出现以下错误:

错误:sources.openmatiples.type:应为[vector、raster、raster dem、geojson、video、image]中的一个,找到“mbtiles”

所以这里的问题是,在我的style-offline.json中,有一个“mbtiles”用于数据源,比如

最后,我希望能够从服务器下载mbtiles,并将它们保存在本地的app文件夹中(这也很好)。我只是无法让它为地图加载加载的mbtiles

有人给我任何帮助或提示吗


更新:

我还在为这个挣扎。。。我编写了一个函数,可以将zip文件下载并解压缩到cordova.file.dataDirectory。zip文件包含脱机映射所需的所有内容(与集成的脱机映射文件的结构相同)

我没有使用setStyle(),而是使用更改的选项创建一个新的脱机映射。如果将文件集成到应用程序中,则此功能可以正常工作。然后我尝试用加载的文件创建一个新的脱机地图,如下所示:

mapboxgl.OfflineMap({
  style: cordova.file.dataDirectory + 'map/styles/osm-bright/style-offline.json',
  container: 'map'
}).then(function(map) {
  mapCallback(map);
});
我得到的只是
FileError{code:1}
。。。但我看不出哪个文件没有找到(但我相信它们是mbtiles文件中丢失的磁贴)

但我不明白为什么找不到这些文件。我可以想象这可能是因为CORS或插件代码中的某些东西。但我什么也找不到。如果是CORS问题而不是文件错误,那么控制台不会出错吗