2017-07-11 2 views
0

Je charge des marqueurs du serveur en utilisant la volée.Comment enregistrer les marqueurs que je peux les effacer?

Je peux ajouter de nouveaux marqueurs sur la carte mais le problème si je supprime certains marqueurs de la base de données, ils ne seront pas supprimés de la carte.

Alors, comment puis-je sauvegarder tous les marqueurs que je peux utiliser clear() pour les supprimer de la carte avant de les charger depuis le serveur?

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


    } 
+0

'ne createMarker' retourne un objet marqueur? –

+0

non, ce n'est pas le cas. – Biblio

Répondre

0

Si vous voulez seulement effacer tous les marqueurs sur la carte, vous pouvez appeler the clear method de l'objet GoogleMap

private GoogleMap mMap; 

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

Si vous voulez aussi suivre tous vos markewrs et être en mesure d'effacer vos articles vous devriez em stocker dans une sorte de liste comme une table de hachage, puis une boucle à travers et retirer chaque marqueur de la carte comme ceci:

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

thamks, je viens d'ajouter ** mMap.clear() ** avant ** createMarker ... ** alors ça marche bien. – Biblio