我正在使用 geoxml3 在 Google 地图上显示 KML 文件。我制作了可以打开和关闭不同 KML 图层的脚本。尽管每一层都按预期打开,但在尝试关闭一层时,会关闭另一层。
var G = google.maps;
var layers = new function() {this.data = [
{id:'japan',url:'kvadrati.kml'},
{id:'d1', url:'Didzis_21.03-03.04.kml'},
{id:'d2', url:'Didzis_04.04-17.04.kml'},
... ]};
function toggle() {for (var i=0; i<layers.data.length; i++) {
if (this.id == layers.data[i].id) {
if (layers.data[i].parsed) {
if (layers.data[i].on)
{geo.hideDocument(geo.docs[i]); layers.data[i].on = false}
else {geo.showDocument(geo.docs[i]); layers.data[i].on = true}}
else {geo.parse(layers.data[i].url); layers.data[i].parsed = true; layers.data[i].on = true}}
};};
function initialize() {
var options = {
center:new G.LatLng(34.9, 137.3),
zoom:10,
mapTypeId:G.MapTypeId.TERRAIN,
scaleControl:true,
overviewMapControl:true,
mapTypeControlOptions:{style:G.MapTypeControlStyle.DROPDOWN_MENU}
};
map = new G.Map(document.getElementById('map'), options);
geo = new geoXML3.parser({
map:map,
zoom:false,
singleInfoWindow:true,
infoWindowOptions:{maxWidth:100},
processStyles:true,
markerOptions:{shadow:''}
});
var el = document.getElementsByTagName('input');
for (var i=0; i<el.length; i++) {
el[i].type = 'checkbox';
G.event.addDomListener(el[i], 'click', toggle)};
};
G.event.addDomListener(window, 'load', initialize);
我确定问题出在函数 toggle() 中:
geo.[show/hide]Document(geo.docs[i]);
在这里测试一下。加载图层需要很长时间,因为它们是未压缩 (KML) 格式。我读到 geoxml3 应该支持KMZ 文件,我什至复制了这个示例中的每个文件,但它对我不起作用。有人知道为什么吗?