代码之家  ›  专栏  ›  技术社区  ›  Biblio

如何保存标记以清除它们?

  •  0
  • Biblio  · 技术社区  · 8 年前

    我可以在地图上添加新标记,但问题是,如果我从数据库中删除一些标记,它们将不会从地图中删除。

    那么,在从服务器加载之前,如何保存可以使用clear()从地图中删除的所有标记?

    ArrayList<MapsActivity_listitem> MyMarkers = new ArrayList<MapsActivity_listitem>();
        RequestQueue requestQueue;
    
    
    
    
    requestQueue = Volley.newRequestQueue(this);
            JsonObjectRequest jsonObjectRequest = new JsonObjectRequest(Request.Method.GET, url,
                    new Response.Listener<JSONObject>() {
                        @Override
                        public void onResponse(JSONObject response) {
    
                            try {
    JSONArray jsonArray = response.getJSONArray("mymarkers");
    
    
    
                                for (int i = 0; i < jsonArray.length(); i++) {
                                    JSONObject respons = jsonArray.getJSONObject(i);
                                    int id = Integer.parseInt(respons.getString("id"));
                    - - -
    
    MyMarkers.add(new MapsActivity_listitem(id, name, lat, lon));
    
    
                                }
    
    
    
    
    
                                JSONObject respons2 = jsonArray.getJSONObject(0);
                                String id = respons2.getString("id");
    
    
                            } catch (JSONException e) {
                                e.printStackTrace();
                            }
    
    
    
                            for (int i = 0; i < MyMarkers.size(); i++) {
                                createMarker(MyMarkers.get(i).getId(), MyMarkers.get(i).getLat(), MyMarkers.get(i).getLon());
                            }
    
    
                        }
                    }, new Response.ErrorListener() {
                @Override
                public void onErrorResponse(VolleyError error) {
                    Log.e("VOLLEY", "ERROR");
                }
            }
            );
            requestQueue.add(jsonObjectRequest);
    
    
        }
    
    1 回复  |  直到 8 年前
        1
  •  0
  •   Jameido    8 年前

    如果您只想清除地图上的所有标记,可以调用 the clear method

    private GoogleMap mMap;
    
    private void removeAllMarkers(){
        mMap.clear()
    }
    

    如果您还想跟踪所有的markewr并能够清除项目,则应将它们存储在某种列表中,如哈希映射,然后循环遍历它并从映射中删除每个标记,如下所示:

    private Map<String, Marker> mMarkers = new HashMap<>();
    
    private void removeAllMarkers(){
        Iterator it = mMarkers.entrySet().iterator();
        while (it.hasNext()) {
            Map.Entry pair = (Map.Entry)it.next();
            ((Marker)pair.getValue()).remove();
            it.remove();
        }
    }