zoukankan      html  css  js  c++  java
  • ArcGIS Android应用客户端加载JSON格式业务数据

    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绘制出来。关键代码如下:

    1. JsonFactory factory = new JsonFactory(); 
    2. URI uri = new URI("file:///mnt/sdcard/Basemap/Beijing/POI/features2.json"); 
    3. File file = new File(uri); 
    4. JsonParser jsonParser = factory.createJsonParser(new FileInputStream(file));             
    5. FeatureSet features = FeatureSet.fromJson(jsonParser);  
    6.  
    7. Graphic[] graphics = features.getGraphics(); 
    8. GraphicsLayer poi = new GraphicsLayer(); 
    9.  
    10. SimpleMarkerSymbol sym = new SimpleMarkerSymbol(Color.BLUE, 8, SimpleMarkerSymbol.STYLE.CIRCLE);             
    11. SimpleRenderer renderer = new SimpleRenderer(sym); 
    12.              
    13. poi.setRenderer(renderer); 
    14. poi.addGraphics(graphics); 
    15.  
    16. ap.addLayer(poi); 
    			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格式的业务数据,可以用来做后续更多的查询分析等操作。

    http://www.verydemo.com/demo_c89_i33700.html

  • 相关阅读:
    斜二进制数
    贝贝的波浪数
    1058: 电文保密
    1065: 贝贝的加密工作
    低危漏洞- X-Frame-Options Header未配置
    1064: 不明飞行物(ufo)
    支付
    1067: 密室寻宝(find)
    c++10进制转换为任意2-16进制数字
    1066: 单词游戏(game)
  • 原文地址:https://www.cnblogs.com/dwf07223/p/3029726.html
Copyright © 2011-2022 走看看