2013-05-06 3 views
1

Я создал кнопку для переключения моего радарного слоя. По умолчанию при загрузке страницы слой отключен. Это то, что я хочу и прекрасно работает. Я нажимаю кнопку «Радар» и накладывается радар. Эта часть отлично работает. Там, где моя проблема, когда я снова ударил ее, чтобы отключить ее, она отходит на секунду, а затем снова возвращается. Что мне не хватает?Google Maps toggle layer

var radarOptions = { 
       gmap: map, 
       name: 'Radar', 
       position: google.maps.ControlPosition.TOP_RIGHT, 
       action: function(){ 
        map.overlayMapTypes.push(null); // create empty overlay entry 
        map.overlayMapTypes.setAt("1",tileNEX); 

       } 
     } 
     var radarButton = new buttonControl(radarOptions); 

DEMO MAP

EDIT:

Вот текущий обновленный код, я использую как для кнопки и слоя. Это произойдет, но когда я пойду, чтобы переключить его, он уходит только на секунду, а затем снова возвращается.

/

/set up custom buttons 
     var radarOptions = { 
       gmap: map, 
       name: 'Radar', 
       position: google.maps.ControlPosition.TOP_RIGHT, 
       action: function(){ 
        map.overlayMapTypes.push(null); // create empty overlay entry 
        map.overlayMapTypes.setAt("1",tileNEX); 


       } 
     } 
     var radarButton = new buttonControl(radarOptions); 

     tileNEX = new google.maps.ImageMapType({ 
      getTileUrl: function(tile, zoom) { 
       return "http://mesonet.agron.iastate.edu/cache/tile.py/1.0.0/nexrad-n0q-900913/" + zoom + "/" + tile.x + "/" + tile.y +".png?"+ (new Date()).getTime(); 
      }, 
      tileSize: new google.maps.Size(256, 256), 
      opacity:0.70, 
      name : 'NEXRAD', 
      isPng: true 
     });   

ответ

5

Вам просто нужно, чтобы очистить его:

map.overlayMapTypes.clear(); 

Или, вы можете совать самые последние:

map.overlayMapTypes.pop(); 

Или, если у вас есть несколько слоев, получите индекс того, который вы хотите, и выполните:

map.overlayMapTypes.removeAt(index); 

EDIT:

Вы, вероятно, нужно заменить действие что-то вроде:

action: function(){ 
       if (map.overlayMapTypes.length==0) { 
        map.overlayMapTypes.push(null); // create empty overlay entry 
        map.overlayMapTypes.setAt("1",tileNEX); 
       } 
       else { 
        map.overlayMapTypes.clear(); 
       } 

      } 

Я знаю, когда страница загружается, если открыть консоль и запустить map.overlayMapTypes.length выводит 0; Как только вы нажмете радар, вы получите 2 (не уверен, почему это не 1, но что угодно). Так что мы делаем, проверяем, есть ли у него слой, если нет, мы делаем ваш обычный код (так как он должен его включить). Если он уже есть, мы очищаем их. Ваш код может быть другим, я предполагаю, что это действие - это то, где вы обрабатываете все клики, если нет, вам может понадобиться поиграть с ним.

Последнее изменение: если вы получили сообщение об ошибке «о отсутствующем», выясните, куда положить a.

var radarOptions = { 
     gmap: map, 
     name: 'Radar', 
     position: google.maps.ControlPosition.TOP_RIGHT, 
     action: function(){ 
       if (map.overlayMapTypes.length==0) { 
        map.overlayMapTypes.push(null); // create empty overlay entry 
        map.overlayMapTypes.setAt("1",tileNEX); 
       } 
       else { 
        map.overlayMapTypes.clear(); 
       } 

      } 
} 
var radarButton = new buttonControl(radarOptions); 

tileNEX = new google.maps.ImageMapType({ 
    getTileUrl: function(tile, zoom) { 
     return "http://mesonet.agron.iastate.edu/cache/tile.py/1.0.0/nexrad-n0q-900913/" + zoom + "/" + tile.x + "/" + tile.y +".png?"+ (new Date()).getTime(); 
    }, 
    tileSize: new google.maps.Size(256, 256), 
    opacity:0.70, 
    name : 'NEXRAD', 
    isPng: true 
}); 
+0

Спасибо, не могли бы вы рассказать немного больше? Использую ли я это для замены или добавления в существующий код? – Texan78

+0

Я обновил свой оригинальный пост с текущим кодом. Я пробовал пару разных вещей, но он все равно не исчезнет. Он уходит на секунду, а затем возвращается. Я не уверен, что мне не хватает. – Texan78

+0

> 'Или, если у вас несколько слоев, получите индекс того, который вы хотите? ---- Как я могу получить индекс? Я получаю орехи с 3-мя переменами – kosemuckel