【问题标题】:when I add a set of markers from array list it show only the last value from array list?当我从数组列表中添加一组标记时,它只显示数组列表中的最后一个值?
【发布时间】:2016-01-05 14:40:30
【问题描述】:

使用数组列表值在 Google 地图中添加标记,但它只从数组列表中获取最后一个值,请帮忙。这是我的循环如下。

                for(int k=0;k<jsonarray2.length();k++)
                    {
                        jsonobject2 =jsonarray2.getJSONObject(k);
                        HashMap<String, String> map1 = new HashMap<String, String>();
                        map1.put("Lat",jsonobject2.getString("Lat"));

                        Log.d("Hbbbbbbbbbbbbbbb", "" + jsonobject2.getString("Lat"));
                        map1.put("Long",jsonobject2.getString("Long"));
                        map1.put("StopName", jsonobject2.getString("StopName"));
                        Log.d("Hbbbbbbbbbbbbbbb", "" + jsonobject2.getString("Long"));
                        //      map1.put("LiveLongitude",jsonobject1.getString("LiveLongitude"));

                        //       Log.d("Hbbbbbbbbbbbbbbb", "" + jsonobject1.getString("LiveLongitude"));


                        arraylist12.add(map1);

                        Log.e("arraylist12", ""+arraylist12);

                         for (int m = 0; m < arraylist12.size(); m++) { 

                            final LatLng position = new LatLng(Double .parseDouble(arraylist12.get(m).get("Lat")),Double.parseDouble(arraylist12.get(m).get("Long"))); 
                            Log.e("position", ""+position);                             
                            String stopname = arraylist12.get(m).get("StopName");
                            if(mark!=null){
                                mark.remove();
                            }
                            final MarkerOptions options = new MarkerOptions().position(position); 

                            //mMap.addMarker(options); 
                            mark=mMap.addMarker(new MarkerOptions().position(position).icon(BitmapDescriptorFactory .fromResource(R.drawable.bustour)).title(stopname));

}

【问题讨论】:

  • @RanjitPati 是的,因为当我单击谷歌地图中稳定的标记时添加标记,所以如果我单击谷歌地图中的标记,它必须显示数组列表中的相关标记集,但是之后,如果我单击任何其他稳定标记,则应删除之前添加的标记并添加新的相关标记集。请帮助
  • 您正在通过if(mark!=null){ mark.remove(); }明确删除标记​​span>
  • @MuhammadBabar 我该如何解决请帮帮我?
  • 删除那部分代码。
  • @MuhammadBabar 如果我删除它,我该如何删除标记并添加新的???

标签: java android arrays google-maps google-maps-markers


【解决方案1】:

我认为这么多代码可以通过循环添加多个标记..

for (int m = 0; m < arraylist12.size(); m++) { 
    final LatLng position = new LatLng(Double .parseDouble(arraylist12.get(m).get("Lat")),Double.parseDouble(arraylist12.get(m).get("Long"))); 

    String stopname = arraylist12.get(m).get("StopName");
    mark=mMap.addMarker(new MarkerOptions().position(position).icon(BitmapDescriptorFactory .fromResource(R.drawable.bustour)).title(stopname));
}

如果您将使用 if(mark!=null){mark.remove();} ,那么它将在添加新标记之前删除最后一个标记..所以最后您只能看到最后一个标记..

编辑

您想在添加新标记集之前删除标记集,然后在添加新标记集之前清除地图。

类似:: mMap.clear(); 然后添加新集合..

【讨论】:

  • 不添加行如何在添加新标记之前删除之前的一组标记?
  • 我认为您想在一张地图中显示所有标记。对..那么为什么要删除最后一个。
  • @ganesang 您需要添加上一组标记是 Hashmap 然后您可以迭代以删除所有标记!
  • @MuhammadBabar 我在 Hashmap 中添加了它,请检查我更新的上述代码
  • @ganesang 将变量 mark 存储到哈希图中,当您第一次在地图上添加它们时,下次单击 A 您需要删除已存储在哈希图中的所有标记一次,然后尝试添加新的标记!
猜你喜欢
  • 1970-01-01
  • 2013-03-15
  • 1970-01-01
  • 1970-01-01
  • 2015-08-25
  • 2013-11-10
  • 2017-09-16
  • 2015-10-31
  • 2019-10-28
相关资源
最近更新 更多