天天看點

ArcGIS Android應用用戶端加載JSON格式業務資料1  概述2  準備JSON檔案3 Android用戶端讀取

1  概述

有時我們需要将業務資料存儲在移動裝置上,以確定在離線狀态下也可以通路。離線存儲的方式有多種,本文就為大家介紹通過JSON檔案存儲業務資料,然後在Android用戶端實作資料的讀取和繪制。

2  準備JSON檔案

首先需要準備JSON檔案,本例中我已經将業務資料釋出在地圖服務中,是以通過ArcGIS REST服務的要素查詢方式獲得JSON格式的資料。

下圖是測試用的服務圖層:

ArcGIS Android應用用戶端加載JSON格式業務資料1  概述2  準備JSON檔案3 Android用戶端讀取

在“Beijing”這個地圖服務中的“教育科研_point_wm”圖層頁面底部找到“Query”按鈕,如下圖:

ArcGIS Android應用用戶端加載JSON格式業務資料1  概述2  準備JSON檔案3 Android用戶端讀取

點選Query按鈕,進入要素查詢頁面,如下圖:

ArcGIS Android應用用戶端加載JSON格式業務資料1  概述2  準備JSON檔案3 Android用戶端讀取

這裡可以根據需要設定查詢過濾條件,本文設定了恒等條件“1=1”,即擷取全部要素,輸出字段設定為全部字段,傳回要素幾何體,此外需要設定傳回結果的格式為json,如下圖:

設定好查詢條件和傳回參數後,點選其中一個Query按鈕,即可獲得滿足條件的JSON格式的要素集,如下圖:

ArcGIS Android應用用戶端加載JSON格式業務資料1  概述2  準備JSON檔案3 Android用戶端讀取

将全部内容複制,建立一個新的文本檔案并黏貼這些内容,将檔案儲存為features.json格式,如下圖:

ArcGIS Android應用用戶端加載JSON格式業務資料1  概述2  準備JSON檔案3 Android用戶端讀取

至此JSON檔案的業務資料就準備好了,将其傳到Android手機或平闆裝置上以供讀取。

3 Android用戶端讀取

由于ArcGIS Android SDK提供了現場的調用接口,用戶端隻需要幾行代碼即可加載JSON檔案,并以Graphic繪制出來。關鍵代碼如下:

JsonFactory factory = new JsonFactory();
			URI uri = new URI("file:///mnt/sdcard/Basemap/Beijing/POI/features2.json");
			File file = new File(uri);
			JsonParser jsonParser = factory.createJsonParser(new FileInputStream(file));			
			FeatureSet features = FeatureSet.fromJson(jsonParser); 
			
			Graphic[] graphics = features.getGraphics();
			GraphicsLayer poi = new GraphicsLayer();
			
			SimpleMarkerSymbol sym = new SimpleMarkerSymbol(Color.BLUE, 8, SimpleMarkerSymbol.STYLE.CIRCLE);			
			SimpleRenderer renderer = new SimpleRenderer(sym);
						
			poi.setRenderer(renderer);
			poi.addGraphics(graphics);
			
		map.addLayer(poi);
           

通過以上代碼,應該就可以加載JSON檔案中的要素集到GraphicsLayer中了,但是實際運作中卻報錯如下:

ArcGIS Android應用用戶端加載JSON格式業務資料1  概述2  準備JSON檔案3 Android用戶端讀取

分析發現,原來是編碼格式問題,需要将JSON檔案儲存為UTF-8格式,是以将features.json另存一下即可,如下圖:

ArcGIS Android應用用戶端加載JSON格式業務資料1  概述2  準備JSON檔案3 Android用戶端讀取

另存後,再傳到手機或平闆電腦上,再測試,效果如下:

ArcGIS Android應用用戶端加載JSON格式業務資料1  概述2  準備JSON檔案3 Android用戶端讀取

圖上的藍色點即是加載的JSON格式的業務資料,可以用來做後續更多的查詢分析等操作。

繼續閱讀