我需要在我的android項目中使用地圖渲染庫。我想使用mapsforge website中的代碼。Android Eclipse項目中的文件路徑
首先,我必須設置我想使用的地圖。方法是從MapView
類setMapFile(String newMapFile)
。我試圖將地圖文件放在Eclipse項目的assets
和res/raw
文件夾中,然後給出路徑,但它對我無效。
任何人都可以告訴我如何正確提供地圖路徑到這張地圖嗎?
我需要在我的android項目中使用地圖渲染庫。我想使用mapsforge website中的代碼。Android Eclipse項目中的文件路徑
首先,我必須設置我想使用的地圖。方法是從MapView
類setMapFile(String newMapFile)
。我試圖將地圖文件放在Eclipse項目的assets
和res/raw
文件夾中,然後給出路徑,但它對我無效。
任何人都可以告訴我如何正確提供地圖路徑到這張地圖嗎?
您必須將地圖文件放置在SD卡上並按照GettingStartedMapView中所述訪問它們。
之一mapsforge開發商回答a similar question on mapsforge-dev
Google Groups解釋爲什麼地圖文件不能放在應用(即在assets
或res
文件夾)中:
[...]的問題是,需要
java.io.RandomAccessFile
實例才能讀取二進制映射文件中的地圖 數據。只有InputStream
是不夠的, ,因爲它沒有seek()
方法。調用skip(n)
是不一樣的。 在最壞的情況下,所有n字節將被讀取,這不是 巨大地圖文件的選項。不幸的是,Android不提供 資源上的可搜索文件訪問。這是由於所有資源文件的打包方式和 壓縮成一個
.apk
文件。快速谷歌搜索顯示,許多其他人都有同樣的問題。一旦你的 應用程序第一次啓動,一個解決方法可能是 將文件複製到SD卡或內部電話文件系統。請參閱: http://groups.google.com/group/android-developers/browse_thread/thread/59b6bf70ca6d2081但根據文件的大小,這個複製過程可能需要較長的時間 。將地圖文件與您的應用程序捆綁在一起後, 也會增加APK文件的大小。另一個缺點是 地圖文件不能再單獨更新或複製到其他 設備。
感謝您的重播!所以在模擬器中使用該代碼是不可能的?我首先需要模擬器上的測試庫,然後使用移動設備。如果這是不可能的唯一的方法來測試代碼將更改後在android橋中調試? – Ged
Android模擬器也可以模擬SD卡,所以完全可以在模擬器上進行測試。您可以使用Android Eclipse插件將文件「上傳」到模擬器的SD卡:http://stackoverflow.com/questions/2808632/manually-put-files-to-android-emulator-sd-card/2808935#2808935 –
感謝您的幫助,這對我來說非常有用:) – Ged