2011-09-02 107 views
0

我需要在我的android項目中使用地圖渲染庫。我想使用mapsforge website中的代碼。Android Eclipse項目中的文件路徑

首先,我必須設置我想使用的地圖。方法是從MapViewsetMapFile(String newMapFile)。我試圖將地圖文件放在Eclipse項目的assetsres/raw文件夾中,然後給出路徑,但它對我無效。

任何人都可以告訴我如何正確提供地圖路徑到這張地圖嗎?

回答

2

您必須將地圖文件放置在SD卡上並按照GettingStartedMapView中所述訪問它們。

之一mapsforge開發商回答a similar question on mapsforge-dev Google Groups解釋爲什麼地圖文件不能放在應用(即在assetsres文件夾)中:

[...]的問題是,需要 java.io.RandomAccessFile實例才能讀取二進制映射文件中的地圖 數據。只有InputStream是不夠的, ,因爲它沒有seek()方法。調用skip(n)是不一樣的。 在最壞的情況下,所有n字節將被讀取,這不是 巨大地圖文件的選項。

不幸的是,Android不提供 資源上的可搜索文件訪問。這是由於所有資源文件的打包方式和 壓縮成一個.apk文件。快速谷歌搜索顯示,許多其他人都有同樣的問題。一旦你的 應用程序第一次啓動,一個解決方法可能是 將文件複製到SD卡或內部電話文件系統。請參閱: http://groups.google.com/group/android-developers/browse_thread/thread/59b6bf70ca6d2081

但根據文件的大小,這個複製過程可能需要較長的時間 。將地圖文件與您的應用程序捆綁在一起後, 也會增加APK文件的大小。另一個缺點是 地圖文件不能再單獨更新或複製到其他 設備。

+0

感謝您的重播!所以在模擬器中使用該代碼是不可能的?我首先需要模擬器上的測試庫,然後使用移動設備。如果這是不可能的唯一的方法來測試代碼將更改後在android橋中調試? – Ged

+0

Android模擬器也可以模擬SD卡,所以完全可以在模擬器上進行測試。您可以使用Android Eclipse插件將文件「上傳」到模擬器的SD卡:http://stackoverflow.com/questions/2808632/manually-put-files-to-android-emulator-sd-card/2808935#2808935 –

+0

感謝您的幫助,這對我來說非常有用:) – Ged

相關問題