離線地圖DIY教學 - Google Maps 快取保存 for iOS 5

幾日前因為要出差,因此請學長教我如何防止iOS刪除Google Maps快取,進而達到離線瀏覽地圖的目的。
大家都知道Maps Enhancer已經停止更新了,因此在iOS 5下只要地圖快取達22Mb會自動刪除。而以下的原理,是利用在地圖SQLite資料庫中增加一個Trigger,使快取不會消失。

工具:iExplorer、SQLite開啓程式(教學中使用MesaSQLite on Mac)
步驟:
1. 到/var/mobile/Library/Caches/Maps/MapTiles,並備份MapTiles.sqlitedb
2. 在電腦上開啟MapTiles.sqlitedb(我使用MesaSQLite on Mac)
3. 增加Trigger:CREATE TRIGGER prevent_delete BEFORE DELETE ON image BEGIN SELECT raise(IGNORE); END

離線地圖DIY教學 - Google Maps 快取保存 for iOS 5

4. 取代原本的檔案
5. 最後記得確認檔案權限是775(owner:mobile)
6. Reboot後就大功告成啦!

離線地圖DIY教學 - Google Maps 快取保存 for iOS 5
36.4MB

此做法有些缺點(類似Maps Enhancer):
1. 不適用GMDL
2. 快取太大會無法讀取(灰畫面),要刪除並重新執行此教學
3. 地圖容易過時(如中國)
4. 其他Apps無法使用此快取(可以找出特定App的MapTiles.sqlitedb執行此教學)
5. 需要Jailbreak

有問題歡迎提出,謝謝!
2012-06-21 21:54 發佈
請問大大,
第三步看不太懂誒,我是用Windows。謝謝。

Bill.JK wrote:
請問大大,第三步看不...(恕刪)


me too

筆記中
生活愜意就好
歐,抱歉寫得不清楚。
有些SQLite軟體如果要新增Trigger,就是單純執行CREATE TRIGGER prevent_delete BEFORE DELETE ON image BEGIN SELECT raise(IGNORE); END這行query.

如果是有GUI圖形界面的話,可以找找看有沒有與以下相符的地方可以設定:
「CREATE TRIGGER」 意思是新增Trigger
「prevent_delete」Trigger名稱
「BEFORE DELETE」 Trigger發生的時間和對資料庫欄位的動作
「ON image」 對image欄位動作
「BEGIN SELECT raise(IGNORE)」 Trigger的內容敘述
「END」 結束



已經153MB了。

目前手邊沒有Windows,不過有問題的朋友,可以提供你使用的軟體給我,我再看看要如何設定,謝謝。
http://sqlitestudio.one.pl/index.rvt?act=download
我找了一套可以 Create trigger 的程式 , SQLite Studio , 畫面如下 , 請問要如何設定呢 ? 謝謝
你好,你已經快完成了,只要再把SELECT raise(IGNORE)輸入到最下面那一欄應該就完成了。
Pclong wrote:
http://sql...(恕刪)

大衛莊 wrote:
你好,你已經快完成了...(恕刪)

剛剛試過 , 的確可以保存超過 22M , 感謝大衛莊的教學 , 非常實用
Pclong wrote:



剛剛試過 , 的確可以保存超過 22M , 感謝大衛莊的教學 , 非常實用...(恕刪)

不客氣。再和大家分享一下,學長利用這個方法在3GS上所存的cache,在達650mb左右時會無法讀取。不過,相信iPhone 4和iPhone 4s應該可以處理更大的cache.
請教各位先進,最後是這樣子嗎?

謝謝!

小弟說明一下自己的步驟(目前仍未成功)

1.用i-funbox 進手機裡的系統檔案 /var/mobile/Library/Caches/Maps/MapTiles,把 MapTiles.sqlitedb檔拷貝出來,放在D槽下的test2目錄下,並在其他地方另行保留一份(*註)

2.依照第五樓Pclong大的文章,下載sqlitestudio-2.0.26.exe(for Windows),並放到上一步驟的同一個test2的目錄裡(圖一)


3.雙擊 sqlitestudio-2.0.26.exe執行

4.按上方的Databases ->Add database(圖二)


5.點選瀏覽,選所有格式,點選剛才的MapTiles.sqlitedb檔案,按下開啟,OK(圖三)


6.點選該資料庫,按下Connect圖示 (圖四)



7.在Trigger的欄位裡,選擇New Trigger(圖五)



8.這個部分一樣是參照5樓Pclong大的文章,最後一欄我上個做法忘記加上BEGIN,所以編輯器也不讓我這樣子存(圖六)



9.結束後,點選DDL,裡面是這樣子 (圖七)



10.再點回Trigger,裡面變這樣子,BEGIN自動跳到上面了 (圖八),儲存後退出。



11.把這個MapTiles.sqlitedb用i-funbox放回手機裡的系統檔案 /var/mobile/Library/Caches/Maps/MapTiles,刪除原先的檔案。

12.用iFile開啟/var/mobile/Library/Caches/Maps/MapTiles裡面的MapTiles.sqlitedb,修改檔案屬性(請參照皮樂小姐的文章) 這裡http://hiraku.tw/2010/12/2352/
修改完後(這邊我有把owner由root改成mobile)按下完成(圖九)



13.重啟reboot 但是小弟的MapTiles.sqlitedb還是一直小於22MB(已經開地圖轉很多地方了),請教諸位先進不曉得哪個步驟要修正?謝謝

註:回到步驟一,保留備份的原因我猜是因為修改後,地圖的緩衝暫存會漸漸肥大,以後不需要用時可以把原檔案換回來(不然不知道怎麼清掉地圖的暫存)


內文搜尋
X
評分
評分
複製連結
Mobile01提醒您
您目前瀏覽的是行動版網頁
是否切換到電腦版網頁呢?