我正在使用Google地图,我正在尝试创建一个支持不同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>
答案 0 :(得分:0)
尝试.click()
功能
$('#kml1').click(function(){
new google.maps.KmlLayer("http://www.domain.com/map_overlay1.txt", {
preserveViewport: true,
});
});
答案 1 :(得分: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);
}
});
});
答案 2 :(得分: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>