You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Cordova iOS访问离线地图瓦片报错:The requested URL was not found on this server

编辑

我重试了此前用过的所有解决方案后发现,直接使用cordova.file.documentsDirectory即可正常运行,推测是上周操作时遗漏了某个步骤。

原始问题

我基于Cordova 9.0.0开发一款Leaflet地图应用,需要实现压缩包下载、解压、删除功能,最终访问移动设备解压目录内的图片完成离线地图使用。

我用到了Cordova File、FileTransfer和Zip三款插件,应用在Android设备上运行完全正常,但在iOS平台(使用cordova platform iOS 6.2.0)出现异常。

我在Xcode中分别针对iPhone 5s(iOS 12.5.4)真机、iPhone 8(iOS 14.5)模拟器、iPhone 11(iOS 14.5)模拟器做了测试,以上设备均可以正常完成压缩包下载、解压、删除操作,离线状态下通过cordova.file.tempDirectory+"name_of_unziped_directory/"、cordova.file.applicationStorageDirectory+'Documents/name_of_unziped_directory/'(即documentsDirectory)或是cordova.file.documentsDirectory+'name_of_unziped_directory/'都能成功访问地图瓦片。唯独在iPhone 11(iOS 14.7.1)真机测试时,虽然可以正常下载、解压、删除文件,但无法访问地图瓦片,报错信息如下:

Failed to load resource: The requested URL file:///private/var/mobile/Containers/Data/Application/<uuid>/tmp/unzip_directory/zoom/x_coord/y_coord/image.png was not found on this server

我访问地图瓦片的代码如下(本例使用documentsDirectory路径,切换为上文提到的其他路径也会得到相同报错):

var mymap = L.map('mapid1').setView(coords, zoom);
L.tileLayer(cordova.file.documentsDirectory + 'unzipped_directory/{z}/{x}/{y}.png', {
  attribution: 'Tiles &copy; Esri',
  maxZoom: 16,
  minZoom: 5,
  trackResize: false,
}).addTo(mymap);

我查阅了Stack Overflow上的同类问题,尝试了所有可见的解决方案都没有成功。

已尝试的解决方案

  • 尝试将tempDirectory、applicationStorageDirectory+'Documents/'(documentsDirectory)替换为Cordova File Plugin官方文档中列出的所有目录,无任何变化。
  • 尝试修改路径格式,包括添加'file:///'前缀、去掉'file:'仅保留三个斜杠'///'、仅使用单斜杠'/'、不加斜杠等,该操作没有效果,始终返回和上文完全一致的报错信息。
  • 尝试使用"cdvfile://"和"file://"协议,同时通过window.WkWebView.convertFilePath([your file path]);转换路径。
  • 尝试安装cordova-plugin-uiwebview-engine插件,该插件可支持访问应用外的文件。
  • 尝试配置自定义scheme,配置示例如下:
<platform name="ios">
    <preference name="scheme" value="app" />
    <preference name="hostname" value="localhost" />
</platform>

配置完成后问题仍未解决。

  • config.xml中的access标签配置为:<access origin="*" />。
  • 在meta CSP标签中添加了"gap:"和"cdvfile:",无任何变化。
  • 了解过通过HTTP服务以Ajax方式读取本地文件的方案,但上级要求禁止使用此类方案,因此无法采用。

我还尝试过其他同类问题的解决方案均无效果,目前已经排查了近一周,部分尝试过的方案已经记不清了。可能存在操作失误或是对文档理解不到位的情况,所有可行的解决方案和建议都可以尝试。

内容的提问来源于stack exchange,提问作者stefan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 22:39:01