2016-04-20 9 views
9

Sto aggiungendo più TileOverlays a una mappa di Google dalla cache. Quando provi ad animarli usando un gestore cambiando la loro visibilità, c'è uno sfarfallio delle sovrapposizioni sulla mappa durante la prima riproduzione.Come aggiungere tessere alla mappa di google e animarle sostituendole con nuove tessere continue

Qualsiasi altro modo con cui posso ottenere questo?

enter image description here

public class LocalTileProvider implements TileProvider { 
    private String url; 
    DatabaseHelper db; 
    String type; 
    // private Paint opacityPaint = new Paint(); 
    String newurl= PathFinder.rainradar_HDBaseurl; 
    String uid; 

    public LocalTileProvider(String uid,DatabaseHelper cache,String type){ 
     this.uid=uid; 
     this.db=cache; 
     this.type=type; 
    } 

    //taking the tile from SQLITEDATABASE 
    @Override 
    public Tile getTile(int x, int y, int zoom){ 
     Tile tile = null;  
     if(db.ispresent(uid, zoom,x , y,type)){ 
      byte[] b=db.gettiles(uid, zoom,x , y,type); 
      tile = new Tile(256, 256, b); 
      return tile; 
     } 
     return NO_TILE; 
    } 
} 

Il seguente è il codice per l'aggiunta di quelle piastrelle alla mappa di Google

LocalTileProvider provider1 = new LocalTileProvider(uidList.get(0), db, TAG); 
TileOverlayOptions top1 = new TileOverlayOptions().tileProvider(provider1).visible(true); 
tileoverlay_1 = googleMap.addTileOverlay(top1); 

Dopo aver aggiunto li sto giocando l'animazione con il gestore commutando la visibilità della piastrella

public void start() { 
    btn_play.setEnabled(true); 
    tileoverlay_default.setVisible(false); 
    runnable_animation = new Runnable() { 
     @Override 
     public void run() { 
      //tileoverlay_default.setVisible(false); 
      isDownloading = false; 
      // stop_download=true; 
      isRunning = true; 
      btn_play.setBackgroundResource(R.drawable.player_pause_2x); 
      setVisibility(global); 

      if (global == 11) { 
       global = 0;    
      } else { 
       global = global + 1; 
      } 
      mHandler_animation.postDelayed(this, 1000); 
     } 
    }; 
    mHandler_animation.post(runnable_animation); 
} 
+0

Si prega di non fare ripetutamente la stessa domanda. Questo è considerato come rumore su Stack Overflow. Se la tua domanda è chiusa come non risponde o non ha attratto risposte, la prima cosa da fare è * migliorare la domanda *; alcune indicazioni per questo è [dato qui] (http://stackoverflow.com/help/how-to-ask). Normalmente le domande di bassa qualità o irrisolvibili saranno chiuse, ma potranno essere riaperte se migliorate o chiarite (a seconda dei casi). – Matt

+0

@ user2197811 hai trovato una soluzione per questo? Questo è un problema significativo con Google Maps a cui non riesco a trovare una soluzione. – aez

risposta

0
public class LocalTileProvider implements TileProvider 
    { 
     private String url; 
     DatabaseHelper db; 
     String type; 
     // private Paint opacityPaint = new Paint(); 
     String newurl= PathFinder.rainradar_HDBaseurl; 
     String uid; 
     public LocalTileProvider(String uid,DatabaseHelper cache,String type) 
     { 
       this.uid=uid; 
      this.db=cache; 
      this.type=type; 
     } 

    //taking the tile from SQLITEDATABASE 
     @Override 
     public Tile getTile(int x, int y, int zoom) 
     { 

      Tile tile = null; 


      if(db.ispresent(uid, zoom,x , y,type)) 
      { 

       byte[] b=db.gettiles(uid, zoom,x , y,type); 
       tile = new Tile(256, 256, b); 
        return tile; 

      } 
    return NO_TILE; 
     } 



    } 
0

Gmaps ha sempre qualche "filckering" quando aggiunge un nuovo TileOverlay. Sono disponibili due opzioni:

  • Aggiungi il "nuovo" overlay su quello vecchio, e rimuovere/nascondere il vecchio solo quando il primo ha caricato (per la quale non mi ricordo se c'è un callback)
  • aggiungere tutti i TileProviders alla prima volta, fissando il primo a visibile (true) e le altre false visibile (non posso ottenere dal codice se già aggiungono tutti i fornitori in un primo momento)
+0

Sì m aggiungendo tutti i provider nei mendicanti e nei frangitori giocando con la visibilità di tileoverlay – user2197811