編輯: 當我在嘗試我已經嘗試過的同樣的解決方案時,我用 "cordova.file.documentsDirectory "得到了它的作業,這一定是我上周遺漏的東西
ORIESTION:
ORIESTION:
原來的問題:
我正在Cordova 9.0.0中構建一個Leaflet地圖應用,它需要能夠下載、解壓、洗掉解壓檔案,然后從移動設備上的解壓目錄中訪問影像,以便離線使用。
我使用了Cordova File、FileTransfer和Zip插件,應用程式在Android設備上如期運行,但在iOS上卻沒有(使用cordova平臺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)設備上測驗時,我可以下載、解壓和洗掉檔案,但無法訪問地圖瓷磚,我得到錯誤:
加載資源失敗。請求的 URL file://private/var/mobile/Containers/Data/Application/<uuid>/tmp/unzip_directory/zoom/x_coord/y_coord/image.png 在本服務器上沒有找到
我試影像這樣訪問地圖瓦片(在這種情況下,我們是通過 documentsDirectory 訪問的,但如果我像上面提到的那樣改變路徑,會得到同樣的結果):
var mymap=L. map('mapid1').setView(coords, zoom)。
L.tileLayer(cordova.file.documentsDirectory 'unzipped_directory/{z}/{x}/{y}.png'/span>, {
attribution: 'Tiles & copy; Esri',
maxZoom: 16,
minZoom: 5,
trackResize: false,
}).addTo(mymap)。
我在 stack overflow 上看到過類似的問題,并嘗試了我所看到的各種解決方案,但都沒有成功。
我所嘗試的:
我嘗試從tempDirectory或applicationStorageDirectory 'Documents/'(documentsDirectory)改為Cordova File Plugin官方檔案中列出的所有目錄,但沒有任何變化。
我試著用'file:///'來改變路徑,沒有'file:'但有3個斜線'///',只有一個斜線'/',沒有斜線,但我認為這沒有什么區別,因為我總是得到同樣的錯誤資訊
。Failed to load resource: 請求的URL file:///private/var/mobile/Containers/Data/Application/<uuid>/tmp/unzip_directory/zoom/x_coord/y_coord/image.png在本服務器上沒有找到嘗試使用 "cdvfile://"和 "file://",并通過以下方式進行轉換
window.WkWebView.convertFilePath([你的檔案路徑]);嘗試安裝cordova-plugin-uiwebview-engine,因為如果我理解正確的話,它允許訪問應用程式之外的檔案
。
嘗試創建一個方案,例如:
我試著把它作為一個新的應用程式。
<platform name="ios"/span>>
< preference name="scheme" value="app" />
< preference name="hostname" value="localhost" />
</platform>
沒有成功。
我在
config.xml中的訪問標簽是這樣設定的:<access origin="*" />在我的元CSP標簽中添加了 "gap: "和 "cdvfile:",沒有任何變化
我讀過一些HTTP服務器,通過Ajax從檔案系統中提供這些檔案,但我擔心那是不可能的,因為我的上級告訴我,要避免這種解決方案
我想知道,我是否可以通過Ajax來提供這些檔案?
我已經嘗試了其他解決類似問題的方法,但沒有成功,如果我沒有在這里列出,我很抱歉,但我試圖解決這個問題大約一個星期了,我忘記了我還嘗試過什么。 也許我弄錯了什么,或者我沒有理解檔案的內容,如果你們有解決方案或建議,我很樂意嘗試。
預先感謝!
uj5u.com熱心網友回復:
我用我已經試過的解決方案解決了這個問題,我用'cordova.file.documentsDirectory'搞定了,我第一次試的時候肯定漏掉了什么。
uj5u.com熱心網友回復:
我在ios的新版本中遇到了同樣的問題。在我的印象中,window.WkWebView.convertFilePath([你的檔案路徑]);是不夠的,我不能提供一個確切的解決方案,但我最后做的是:
if(path.startsWith("cdvfile://") {
resolveLocalFileSystemURL(path, p => {
return WkWebView.convertFilePath(p.toURL))
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/312033.html
標籤:
