Autore Topic: cancellare tutti gli overlay  (Letto 571 volte)

Offline gabric

  • Utente senior
  • ****
  • Post: 615
  • Respect: +18
    • Google+
    • Mostra profilo
    • Brancato's site
  • Dispositivo Android:
    Nexus 5 / Tablet mediacom s4
  • Play Store ID:
    Brancato's+app
  • Sistema operativo:
    window7. ubuntu
cancellare tutti gli overlay
« il: 21 Settembre 2012, 13:18:09 CEST »
0
Salve, ho una mappa che al cambiamento di locazione (locationchanged) mi interroga un database e dovrebbe stampare solo determinati overlay (punti) sulla mappa
il problema è che al successivo spostamento, non cancella tutti i precedenti...
idee su come fare?
ho usato map.invalidate(); ma non fa nulla map.
ho provato anche a rimuovere tutti gli overlay prima di inserire i nuovi, e niente da fare..
ecco un pò di codice, magari si capisce meglio

Codice (Java): [Seleziona]
LocationListener llFine = new LocationListener() {
           
             public void onLocationChanged(Location location) {
                     Log.d("qui", "llFine Provider: " + location.getProvider());
                     map.invalidate(); //provo a invalidare la mappa per ricrearla, ma non fa nada
                     map.destroyDrawingCache();  //nemmeno questo fa nulla
                     List<Overlay> overlays = map.getOverlays(); //ricreo qui la variabile per gli overlays sperando che si resetti, ma niente
                         //overlays.removeAll(overlays); //questo fa sparire tutto, anche la mappa
                     runLocationUpdate(location);

                     
                     //itemizedOverlay.clear(); //non fa niente
                     //metto qui il codice per filtrare i punti
                     try{
                               
                                 
                                for (int k=0; k<vettore.length-12; k=k+12){
                                        //qui creo i singoli puntatori
                                       
                                        if(k==0){
                                        overlays.remove(overlays); //rimuovo gli overlay solo al primo ciclo, ma non fa nulla
                                        }
                                       
                                         AItemizedOverlay itemizedoverlay = null;
                                  OverlayItem overlayitem;
                                  overlays = map.getOverlays();
                                 
                                        lat =Double.parseDouble(lat1);
                                        lng =Double.parseDouble(lng1);
                                        lat=lat*1E6;
                                        lng=lng*1E6;
                                 
                                        //piazzo il marker
                                        GeoPoint point = new GeoPoint(lat.intValue(), lng.intValue());
                                        .
                                        .
                                        .
                                                Drawable drawable = getApplicationContext().getResources().getDrawable(R.drawable.centouno);
                                               
                                                itemizedoverlay = new AItemizedOverlay(drawable, getApplicationContext()); //qui c'era this al posto di location listener
                                                //setto il geo point con tutti i metodi e le opzioni
                                               
                                                overlayitem = new OverlayItem(point, "autobus", "autobus");
                                                itemizedoverlay.addOverlay(overlayitem);
                                                overlays.add(itemizedoverlay);    //e qui li aggiungo
                                        }
                                                       
                                  }
                               
                       
                               
                                       
                                  map.setClickable(true);
                                        map.setBuiltInZoomControls(true);
                                }catch(Exception e){
                                        System.out.println("errore: "+e);
                                        TextView tv = (TextView) findViewById(R.id.tvInfo);
                                        tv.setText("Verifica la connessione");}
                     map.invalidate(); //nemmeno qui fa niente
             }

idee?