Android Studio中如何通过JSONObject/JSONArray获取Polyline的Points
在Android Studio中解析路线JSON获取Polyline Points的方法
嘿,我来帮你搞定这个问题!你要从包含多个途经点的路线JSON数据里提取Polyline的points字段,其实就是逐层拆解JSON的嵌套结构就行,我给你一步步说明:
第一步:先理清JSON的层级结构
从你提供的示例JSON可以看到,数据的嵌套关系是这样的:JSONObject → routes(JSONArray) → 单个route(JSONObject) → legs(JSONArray) → 单个leg(JSONObject) → steps(JSONArray) → 单个step(JSONObject) → polyline(JSONObject) → points(String)
第二步:编写解析代码
在Android里,我们可以用原生的JSONObject和JSONArray来完成解析,下面是完整的示例代码:
try { // 假设你已经拿到了返回的JSON字符串,存放在responseJson变量里 JSONObject rootObject = new JSONObject(responseJson); // 获取routes数组,一般取第一个元素(最优路线) JSONArray routesArray = rootObject.getJSONArray("routes"); if (routesArray.length() > 0) { JSONObject routeObject = routesArray.getJSONObject(0); // 获取legs数组(每个leg是一段起点到途经点/终点的路线) JSONArray legsArray = routeObject.getJSONArray("legs"); for (int i = 0; i < legsArray.length(); i++) { JSONObject legObject = legsArray.getJSONObject(i); // 获取steps数组(每个step是一段具体的行驶步骤) JSONArray stepsArray = legObject.getJSONArray("steps"); for (int j = 0; j < stepsArray.length(); j++) { JSONObject stepObject = stepsArray.getJSONObject(j); // 获取当前step的polyline对象 JSONObject polylineObject = stepObject.getJSONObject("polyline"); // 提取points字符串 String polylinePoints = polylineObject.getString("points"); // 这里你可以把points存起来,或者做后续处理 Log.d("PolylinePoints", "Step " + j + ": " + polylinePoints); } } } } catch (JSONException e) { e.printStackTrace(); // 处理解析异常,比如JSON格式错误、字段缺失等情况 }
补充说明
- 异常处理不能少:解析JSON时一定要捕获
JSONException,避免因为接口返回格式变动、字段缺失等情况导致APP崩溃 - 关于
points的解码:你拿到的points是经过编码的压缩字符串,如果需要转换成可用于绘制Polyline的LatLng坐标列表,可以用Google Maps SDK提供的PolyUtil.decode(polylinePoints)方法,直接将编码字符串转为List<LatLng>
内容的提问来源于stack exchange,提问作者Sumit
相关产品推荐
相关产品推荐

