如何保存我可以清除的标记?

How to save the markers that I can clear them?

我使用 volley 从服务器加载了一些标记。

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

那么在从服务器加载它们之前,如何保存所有可以使用 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);


    }

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

private GoogleMap mMap;

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

如果您还想跟踪所有标记并能够清除您的项目,您应该将它们存储在某种列表(如 HashMap)中,然后遍历它并从地图中删除每个标记,如下所示:

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();
    }
}