arcgis android json,ArcGIS Android应用客户端加载JSON格式业务数据

1  概述

有时我们需要将业务数据存储在移动设备上,以确保在离线状态下也可以访问。离线存储的方式有多种,本文就为大家介绍通过JSON文件存储业务数据,然后在Android客户端实现数据的读取和绘制。

2  准备JSON文件

首先需要准备JSON文件,本例中我已经将业务数据发布在地图服务中,所以通过ArcGIS REST服务的要素查询方式获得JSON格式的数据。

下图是测试用的服务图层:

4c433135f3e2eafdd4da5c326a708a0c.png

在“Beijing”这个地图服务中的“教育科研_point_wm”图层页面底部找到“Query”按钮,如下图:

481cc776b605f8b6527a76c6c8e6ea3a.png

点击Query按钮,进入要素查询页面,如下图:

这里可以根据需要设置查询过滤条件,本文设置了恒等条件“1=1”,即获取全部要素,输出字段设置为全部字段,返回要素几何体,此外需要设置返回结果的格式为json,如下图:

设置好查询条件和返回参数后,点击其中一个Query按钮,即可获得满足条件的JSON格式的要素集,如下图:

将全部内容复制,创建一个新的文本文件并黏贴这些内容,将文件保存为features.json格式,如下图:

b54cf9396fa9e4d2db1be218a867718b.png

至此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中了,但是实际运行中却报错如下:

2887f1a76e849c3c5efacc6ed2c22e3b.png

分析发现,原来是编码格式问题,需要将JSON文件保存为UTF-8格式,所以将features.json另存一下即可,如下图:

baf1cb93a5a1902729cde2a7161cd303.png

另存后,再传到手机或平板电脑上,再测试,效果如下:

f9f88e9854b3cad6f94858604704e041.png

图上的蓝色点即是加载的JSON格式的业务数据,可以用来做后续更多的查询分析等操作。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值