2012-09-14 78 views
0

我正在使用Google Maps,并且正在尝试创建启用不同KML叠加层的侧边栏。我已经将KML图层放入与按钮的ID标记相同的变量中,以便按下它们以激活它们,希望将该ID作为变量调用,然后将其用于setMap函数。
不知道这是否真的可能

在这个脚本这里我试图让它按ID标签'kml1',设置testvar ='kml1',然后能够把testvar.setMap(the_Map )代替kml1.setMap(the_Map的),如图的testvar == kml1通过编号将变量设置为另一个变量

jQuery的

kml1 = new google.maps.KmlLayer("http://www.domain.com/map_overlay1.txt", { 
      preserveViewport: true, 
     }); 
     kml2 = new google.maps.KmlLayer("http://www.odomain.com/map_overlay2.txt", { 
      preserveViewport: true, 
     }); 

    $(document).ready(function() { 
     $('.kml_item').toggle(
       function() { 
        for (i=0; i<50; i++) { 
         testvar = this.id 
         if (testvar == 'kml' + i) { 
          testvar.setMap(the_Map); 
          break; 
         } 
        } 
       }, 
       function() { 
        for (i=0; i<50; i++) { 
         testvar = this.id 
         if (testvar == 'kml' + i) { 
          testvar.setMap(null); 
          break; 
         } 
        } 
      ); 
    }) 

相关联的HTML

<div id="kml1" class="kml_item">KML 1</div> 
      <div id="kml2" class="kml_item">KML 2</div> 
+1

慎用'i'它泄漏到在两个回路全球范围内。会造成混乱和麻烦。不要忘记使用'var'。 – elclanrs

回答

0

不知道它的真正犹太回答在这个网站你自己的问题,但我想通了另一种方法,但我相信我的使用ID标签作为变量的初始问题是无法解决我的样子接近它。我将它们放在一个数组中,而不是单独的变量中的每个KML层。给标题标签赋予一个可点击的div值可以让该函数进行计数,直到数组项与该div的标题数相匹配,并将该项从数组中放到地图上。

KML阵列

kml_arr = [ 
      new google.maps.KmlLayer("http://www.domain.com/map_overlay1.txt", { 
      preserveViewport: true, 
     }), 
      new google.maps.KmlLayer("http://www.domain.com/map_overlay2.txt", { 
      preserveViewport: true, 
     }) 
     ] 

jQuery的

$(document).ready(function() { 
     $('.kml_item').toggle(
       function() { 
        $(this).animate({backgroundColor: '#ffffff'}, 200); 
        for (i=0; i<50; i++) { 
         if (i == this.title) { 
          kml_arr[i].setMap(the_Map); 
          break; 
         } 
        } 
       }, 
       function() { 
        $(this).animate({backgroundColor: '#d0d0d0'}, 200); 
        for (i=0; i<50; i++) { 
         if (i == this.title) { 
          kml_arr[i].setMap(null); 
          break; 
         } 
        } 
       } 
      ); 
    }) 

相关的HTML

   <div title="0" id="kml1" class="kml_item">KML 1</div> 
      <div title="1" id="kml2" class="kml_item">KML 2</div> 
0

尝试.click()功能

$('#kml1').click(function(){ 
     new google.maps.KmlLayer("http://www.domain.com/map_overlay1.txt", { 
      preserveViewport: true, 
     }); 
    }); 
0

我想你可以通过一些调整得到你想要的东西。

// These kml objects will be attached to the global window object at 
// window.kml1 
// or 
// window['kml1'] 
var kml1 = new google.maps.KmlLayer("http://www.domain.com/map_overlay1.txt", { 
     preserveViewport: true, 
    }); 
var kml2 = new google.maps.KmlLayer("http://www.odomain.com/map_overlay2.txt", { 
     preserveViewport: true, 
    }); 

$(document).ready(function() { 
    $('.kml_item').click(function() { 
     // Access the various kml objects and set the_Map 
     var kml = window[this.id] 
     if(kml.getMap()) { 
      kml.setMap(null); 
     } 
     else { 
      kml.setMap(the_Map); 
     } 
    }); 
}); 
相关问题