我正在使用geoxml3在Google地圖上顯示KML文件。我製作了可以打開和關閉不同KML圖層的腳本。雖然每層都按預期打開,但試圖關閉一層時關閉另一層。 geoxml3 - 帶有KML圖層控件的Google地圖
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);
我敢肯定,問題是功能切換(),其中顯示:
geo.[show/hide]Document(geo.docs[i]);
Test it here。 加載圖層需要相當長的時間,因爲它們處於未壓縮(KML)格式。我讀geoxml3應該支持KMZ files,我甚至複製了這個例子中的每個文件,但它不適合我。任何人都知道這是爲什麼?
你試過用geoxml3解析KMZ嗎?我無法獲得KMZ渲染的工作頁面。如果只有那些可下載的例子,比如檔案,以確保它真的有效。 –
不,我沒有,我只使用多分支。看起來主要功能並沒有真正的不同,geoxml3.js文件負責確定傳遞的URL是否對應於一個zip文件。 – vicould