我尝试使用Google地图和JSON构建应用,但是我需要从Stringrequest生成一个序列。
我打算采用以下方式,但结果为空
StringRequest strReq = new StringRequest(Request.Method.POST, urltime, new Response.Listener<String>() {
@Override
public void onResponse(String response) {
Log.e("Response: ", response);
try {
JSONObject jObj = new JSONObject(response);
String getObject = jObj.getString("saagPos");
JSONArray jsonArray = new JSONArray(getObject);
for (int i = 0; i < jsonArray.length(); i++) {
JSONObject jsonObject = jsonArray.getJSONObject(i);
coorWay = coorWay + "|" + jsonObject.getString(LAT2) + "," + jsonObject.getString(LNG2);
if (bangaloreRoute == null) {
bangaloreRoute = new ArrayList<>();
} else {
bangaloreRoute.clear();
}
bangaloreRoute.add(new LatLng(Double.parseDouble(jsonObject.getString(LAT2)), Double.parseDouble(jsonObject.getString(LNG2))));
// Menambah data marker untuk di tampilkan ke google map
}
} catch (JSONException e) {…
}
}
我需要获得以下序列,对每个结果重复bangaloreRoute.add(new LatLng(...
,例如:
bangaloreRoute.add(new LatLng(12.922294704121231, 77.61939525604248));
bangaloreRoute.add(new LatLng(12.924637088068884, 77.6180648803711));
bangaloreRoute.add(new LatLng(12.925557304321782, 77.6200819015503));
bangaloreRoute.add(new LatLng(12.927104933097784, 77.62081146240234));
bangaloreRoute.add(new LatLng(12.928234277770715, 77.62111186981201));
bangaloreRoute.add(new LatLng(12.92990737159723, 77.6218843460083));
bangaloreRoute.add(new LatLng(12.9337554448302, 77.62342929840088));
该序列如何生成,以从我的StringRequest构建路由?
谢谢。
答案 0 :(得分:0)
您没有显示bangaloreRoute
的初始定义位置,但看起来您的代码中存在错误:
if (bangaloreRoute == null) {
bangaloreRoute = new ArrayList<>();
} else {
bangaloreRoute.clear();
}
以上是您的主循环的一部分。这实际上是在说:“第一次,如果bangaloreRoute
为空,则创建一个新的ArrayList
”就可以了。但是之后else
总是 清除bangaloreRoute ArrayList,无论它们中已有什么。
因此,每次循环遍历此代码时,都会清除上一个循环迭代中添加的内容。最后,您将最终得到一个LatLng
元素,只是最后添加的一个元素。
答案 1 :(得分:0)
可能是在for循环的每个循环中清除arraylist并插入新数据。因此, bangaloreroute 阵列列表中没有数据。
尝试以下修改并将其替换为:
StringRequest strReq = new StringRequest(Request.Method.POST, urltime, new Response.Listener<String>() {
if(bangaloreRoute ==null)
bangaloreRoute =new ArrayList<>();
@Override
public void onResponse(String response) {
Log.e("Response: ", response);
try {
JSONObject jObj = new JSONObject(response);
String getObject = jObj.getString("saagPos");
JSONArray jsonArray = new JSONArray(getObject);
for (int i = 0; i < jsonArray.length(); i++) {
JSONObject jsonObject = jsonArray.getJSONObject(i);
coorWay = coorWay + "|" + jsonObject.getString(LAT2) + "," + jsonObject.getString(LNG2);
bangaloreRoute.add(new LatLng(Double.parseDouble(jsonObject.getString(LAT2)), Double.parseDouble(jsonObject.getString(LNG2))));
// Menambah data marker untuk di tampilkan ke google map
}
} catch (JSONException e) {
}
}
希望这可以解决您的问题。