我在Ionic做一个实习项目。在这个项目中,我必须读取mbtiles文件(通过@ionic-native/file
插件)并将它们放在传单中(通过leaflet-tilelayer-mbtiles-ts
传单插件)。我是这样的:
this.file.readAsArrayBuffer(PATH, MBITILEFILENAME).then(res =>{
L.tileLayer.mbTiles(res,{
maxZoom: 18,
attribution: "mbtiles"
}).addTo(this.map)
})
由于某些原因我不使用Ionic测试应用程序,因此必须直接在手机上测试我的应用程序,并使用Android Studio控制台查看发生了什么情况。
这是问题所在
当我使用一个较小的mbtiles文件(10Mo,测试文件)时,它可以工作,但是当我使用较大的文件(880Mo,该文件必须在产品环境中读取)时,Android控制台向我显示以下内容:
I /铬:[INFO:CONSOLE(312)]“未捕获的RangeError:数组缓冲区 分配失败”,来源:http://localhost/cordova.js(312)
我尝试搜索file.readAsArrayBuffer()
的大小限制,但未找到任何内容。
您能告诉我file.readAsArrayBuffer()
的大小限制是多少吗?有什么解决方案可以绕过Ionic的限制吗?还是可以解决我问题的东西?
答案 0 :(得分:0)
我找到了怎么做,但忘了发布答案。我使用了来自“@ionic-native/ionic-webview”的 WebView,所以地图不需要完全加载,只需要部分。
var pathToFile =
this.file.externalDataDirectory + PATHTOFILE
var truePath = WebView.convertFileSrc(pathToFile);
L.tileLayer(truePath + "/{z}/{x}/{y}.png", {
maxZoom: 18,
attribution: "local"
}).addTo(this.map);