我正在使用谷歌地图,我正在尝试创建一个侧栏,支持不同的KML覆盖。我将KML层放入变量中,使用与按下按钮激活它们的ID标签相同的变量,希望调用该ID作为变量,然后可以在setMap函数中使用它。
我不确定这是否真的可行
在这个脚本中,我尝试这样做,所以您可以使用ID标记‘kml1’按element,设置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>发布于 2012-09-15 08:02:48
我不确定在这个网站上回答你自己的问题是否真的是合法的,但我想出了另一种方法,尽管我确实相信我最初使用ID标签作为变量的问题是无法解决的。我没有将每个KML层放在单独的变量中,而是将它们放在一个数组中。为可单击的div指定title标记的编号,允许函数递增计数,直到数组项与div的标题号匹配,并将数组中的项放到map上。
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>发布于 2012-09-15 06:42:05
尝试.click()函数
$('#kml1').click(function(){
new google.maps.KmlLayer("http://www.domain.com/map_overlay1.txt", {
preserveViewport: true,
});
});发布于 2012-09-15 06:43:49
我认为你可以通过一些调整得到你想要的东西。
// 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);
}
});
});https://stackoverflow.com/questions/12432843
复制相似问题