2013-06-21 3 views
1

У меня есть Android Maps v2 TileOverlay, который отлично работает. У меня есть собственный TileProvider, который генерирует растровые изображения, все отлично работает. Я хочу, чтобы динамически сделать плитку невидимой некоторое время во время выполнения, используя такой код:Как сделать нарисованный TileOverlay невидимым

private TileOverlay tileOverlay; 
... 
tileOverlay = googleMap.addTileOverlay(new TileOverlayOptions() 
       .zIndex(100f) 
       .tileProvider(new MyTileProvider(credential,mContext))); 
... 
tileOverlay.setVisible(false); 

TileProvider работает и рисует плитку только право, но плитка никогда не идет невидимой, когда я использую setVisible(false).

Я могу даже читать tileOverlay.isVisible(), и он возвращает false, но плитка все еще видна.

Можно ли сделать нарисованную плитку невидимой?

Спасибо.

+0

Если вы можете сделать простой пример, который показывает, я предложил бы разместить вопрос на [GMaps-ИПН вопросов] (http://code.google.com/ р/GMaps-апи-вопросы/проблемы/список? может = 2 & д = apitype = Android2). Попробуйте добавить 'setVisible (false)' в примеры API-интерфейсов Maps API TileOverlay (тот, который показывает луну). –

+0

Спасибо MaciejGorski, отличная идея. Я сделал это, и он работает в демонстрациях API. Там они используют UrlTileProvider, тогда как я определяю свой собственный TileProvider. Я бы подумал, что выход TileOverlay будет одним и тем же, поскольку оба они работают, но все же я не могу сделать свою собственную плиту невидимой, но я могу сделать их невидимыми. Есть идеи? – aez

+0

Это ошибка, я начал проблемы в gmaps-api-issues 5541 – aez

ответ

0

Да, можно сделать нарисованный TileOverlay невидимым. Ошибка была в моем коде: я удалил нулевую проверку в GoogleMap, которая вызывается во время операции onCreate() и onResume() и поэтому имеет несколько карт. Поэтому даже после вызова TileOverlay.setVisible (false) или .remove() остались еще карты с оставшимся TileOverlay. Странно то, что даже без этой нулевой проверки приложение, похоже, работает по-другому. Смотрите важную проверку нулевой ниже:

private void setUpMapIfNeeded() { 
     // Do a null check to confirm that we have not already instantiated the map. 
     if (googleMap==null) { //-- DON'T FORGET THIS!! 

      googleMap = ((SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map)).getMap();   
      // Check if we were successful in obtaining the map. 
      if (googleMap!=null) { 
       setUpMap(); 
      } 
     } 
    }