【问题标题】:Marker is not adding properly while add through for loop通过 for 循环添加时标记未正确添加
【发布时间】:2014-06-12 18:00:00
【问题描述】:
  1. 标记未通过 for 循环正确添加
  2. 当我给 i=2 时,它会加载第二个标记,否则它只会加载单个标记
  3. 你能告诉我可能是什么原因
JSONObject jsonObject = new JSONObject(result);

            for (int i = 1; i <= jsonObject.length(); i++) {
                jsonObject = jsonObject.getJSONObject(Integer.toString(i));

                Double lat = jsonObject.getDouble("latitude");

                Double lon = jsonObject.getDouble("longitude");

                int sno = jsonObject.getInt("sno");

                Toast.makeText(getBaseContext(), "" + lat + lon + sno,
                        Toast.LENGTH_SHORT).show();

                MarkerOptions marker = new MarkerOptions()
                        .position(new LatLng(lat, lon)).title("New")
                        .snippet("are here");

                googleMap.addMarker(marker);

            }

【问题讨论】:

  • 你确定你的标记有不同的 LatLng 值吗?也许他们只是重叠
  • @SteveBenett 不,我只有不同的值

标签: android maps google-maps-markers


【解决方案1】:

问题是您在尝试获取内部JSONObject 时使用了相同的JSONObject 变量。因此,在第一个 for 循环之后,第二个将尝试从内部 JSONObject 而不是从父 JSONObject 获取 JSONObject

像这样为内部JSONObject声明一个新变量

JSONObject jsonObject = new JSONObject(result);
for (int i = 1; i <= jsonObject.length(); i++) {
   JSONObject jsonInnerObject = jsonObject.getJSONObject(Integer.toString(i));
   Double lat = jsonInnerObject.getDouble("latitude");
   Double lon = jsonInnerObject.getDouble("longitude");
   // Add your other stuff here
}

另一种最佳方法是使用键进行迭代。这不需要索引。您可以使用任何值代替索引。

JSONObject jsonObject = new JSONObject(json);
Iterator<Object> iterator = jsonObject.keys();

while (iterator.hasNext()){
 Object obj = iterator.next();
 JSONObject innerJsonObject = jsonObject.getJSONObject(obj.toString());
 if(innerJsonObject != null) {
 Double lat = innerJsonObject.getDouble("latitude");
 Double lon = innerJsonObject.getDouble("longitude");
   // do your other stuff here to add to marker
  }
 }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-04-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-01
    • 2013-05-25
    相关资源
    最近更新 更多