如何保存我可以清除的标记?
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();
}
}
我使用 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();
}
}