ArcGIS for Android SDK V10.1.1的已經可以自己添加離線地圖了。并且實作的方法也是十分簡單。
首先,我們需要了解一下離線加載的ArcGISLocalTiledLayer的API注解:
那麼,接下來還需要了解它其中的path路徑的格式。它完整的java語句如下:
ArcGISLocalTiledLayer local = new ArcGISLocalTiledLayer("file:///mnt/sdcard/<CacheName>/Layers");
file:///mnt/sdcard/<CacheName>/Layers,這是官方給的一個例子,似乎有些讓人費解的就是最後的Layers。其實,将其拆分一下并附帶一個例子就很好了解了。
首先是file:///mnt/sdcard/這個頭的格式這個是肯定是一樣的。除非不把離線地圖包放在sd卡上。
其次,後面這<CacheName>/Layers是一個整體。比如,我有一個地圖包,名稱是Parcels的檔案夾
然後下一層的内容就是
在Parcel Map檔案夾下就是地圖資料檔案夾和配置檔案
—alllayers裡面是大家熟悉的地圖資料了。
大緻的層次結構就是這樣。那麼接下來就需要将Parcel整個檔案夾拷貝到sdcard的根目錄下。根據以上這個範例,我們就可以得到有效的離線地圖加載路徑是:file:///mnt/sdcard/Parcel/Parcel Map
這樣,java代碼也就出來了:
public class LocalTiledLayer extends Activity {
MapView map = null;
ArcGISLocalTiledLayer local;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
map = (MapView) findViewById(R.id.map);
// the data is stored on the SDCARD
// the data is created as a tiled cache
local = new ArcGISLocalTiledLayer("file:///mnt/sdcard/Parcel/Parcel Map");
map.addLayer(local);
}
}
這樣做完,其實還不夠,還需要在main.xml檔案中設定一下地圖切片的顯示範圍:
initExtent = "-13644840.338547781, 4529944.368315823, -13614265.527233753, 4552875.476801345“
否則,地圖可能加載會失敗。
綜上所述,現在加載離線地圖的方法是十分簡單的。隻需要将放在sd的離線地圖包的路徑寫正确。并且地圖的顯示範圍在初始化時就定義好。就可以實作地圖的離線加載了!