1 概述
有時我們需要將業務資料存放區在行動裝置上,以確保在離線狀態下也可以訪問。離線儲存的方式有多種,本文就為大家介紹通過JSON檔案儲存體業務資料,然後在Android用戶端實現資料的讀取和繪製。
2 準備JSON檔案
首先需要準備JSON檔案,本例中我已經將業務資料發布在地圖服務中,所以通過ArcGIS REST服務的要素查詢方式獲得JSON格式的資料。
是測試用的服務圖層:
在“Beijing”這個地圖服務中的“教育科研_point_wm”圖層頁面底部找到“Query”按鈕,如:
點擊Query按鈕,進入要素查詢頁面,如:
這裡可以根據需要設定查詢過濾條件,本文設定了恒等條件“1=1”,即擷取全部要素,輸出欄位設定為全部欄位,返回要素幾何體,此外需要設定返回結果的格式為json,如:
設定好查詢條件和返回參數後,點擊其中一個Query按鈕,即可獲得滿足條件的JSON格式的要素集,如:
將全部內容複寫,建立一個新的文字檔並黏貼這些內容,將檔案儲存為features.json格式,如:
至此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中了,但是實際運行中卻報錯如下:
分析發現,原來是編碼格式問題,需要將JSON檔案儲存為UTF-8格式,所以將features.json另存一下即可,如:
另存後,再傳到手機或平板電腦上,再測試,效果如下:
圖上的藍色點即是載入的JSON格式的業務資料,可以用來做後續更多的查詢分析等操作。