2012-09-14 99 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); 
     } 
    }); 
}); 
相關問題