2016-04-20 2 views
9

Я добавляю несколько TileOverlays к карте Google из кеша. При попытке оживить их с помощью обработчика, изменив их видимость, во время первого воспроизведения на экране появляется мерцание наложений на карте.Как добавить плитки к карте google и анимировать их i.e заменяя их новыми новыми плитами

Любой другой способ, с помощью которого я могу достичь этого?

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

Ниже код для добавления этих фрагментов на карту Google

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

После добавления их я играю анимацию с обработчиком переключая видимость плитки в

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

Не спрашивайте один и тот же вопрос повторно. Это рассматривается как шум при переполнении стека. Если ваш вопрос закрыт как безответный или не привлекает ответов, то первое, что нужно сделать, это * улучшить вопрос *; некоторые рекомендации для этого [приведены здесь] (http://stackoverflow.com/help/how-to-ask). Некачественные или безответные вопросы, как правило, закрываются, но могут быть вновь открыты, если они будут улучшены или уточнены (при необходимости). – Matt

+0

@ user2197811 Вы нашли решение для этого? Это значительная проблема с Google Maps, и я также не могу найти решение. – aez

ответ

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

При добавлении нового TileOverlay Gmaps всегда имеет «филирование». У вас есть два варианта:

  • Добавить в «новый» наложение поверх старой, и удалить/скрыть старую только тогда, когда первый был загружен (для которого я не помню, если есть обратный вызов)
  • Добавить вСЕ TileProviders в первый раз, установив первый видимый (истину) и другие в видимую ЛОЖЬ (я не могу получить от вашего кода, если вы уже добавить все поставщик на первый раз)
+0

Да, добавляя все Провайдеры в попрошайничестве и латтерах, играя с видимостью tileoverlay – user2197811

Смежные вопросы