天天看點

ArcGIS for Android 之本地離線地圖添加(LocalTitledLayer)

ArcGIS for Android SDK V10.1.1的已經可以自己添加離線地圖了。并且實作的方法也是十分簡單。

首先,我們需要了解一下離線加載的ArcGISLocalTiledLayer的API注解:

ArcGIS for Android 之本地離線地圖添加(LocalTitledLayer)

那麼,接下來還需要了解它其中的path路徑的格式。它完整的java語句如下:

ArcGISLocalTiledLayer local = new ArcGISLocalTiledLayer("file:///mnt/sdcard/<CacheName>/Layers");

file:///mnt/sdcard/<CacheName>/Layers,這是官方給的一個例子,似乎有些讓人費解的就是最後的Layers。其實,将其拆分一下并附帶一個例子就很好了解了。

首先是file:///mnt/sdcard/這個頭的格式這個是肯定是一樣的。除非不把離線地圖包放在sd卡上。

其次,後面這<CacheName>/Layers是一個整體。比如,我有一個地圖包,名稱是Parcels的檔案夾

ArcGIS for Android 之本地離線地圖添加(LocalTitledLayer)

然後下一層的内容就是

ArcGIS for Android 之本地離線地圖添加(LocalTitledLayer)

在Parcel Map檔案夾下就是地圖資料檔案夾和配置檔案

ArcGIS for Android 之本地離線地圖添加(LocalTitledLayer)

—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的離線地圖包的路徑寫正确。并且地圖的顯示範圍在初始化時就定義好。就可以實作地圖的離線加載了!

繼續閱讀