2013-07-15 38 views
1

我有一個Google地圖,其中包含在KML文件中定義的點和多邊形,並且只有在另一個KML文件中定義了點。我希望能夠加載一個或另一個根據變焦水平,曾嘗試以下的變化:kml在高縮放級別隱藏多邊形

var url_end = "?nocache=" + (new Date()).valueOf(); 
var NWlayer = new google.maps.KmlLayer({ 
    if (map.getZoom() > 18){ 
    url: "http://www.example.com/Google/ShowPointsOnly.kml" + url_end 
    } 
    else { 
    url: "http://www.example.com/Google/ShowAll.kml" + url_end 
    } 
}); 
NWlayer.setMap(map); 

...但根據我試試我拿點和多邊形不管變化縮放級別,否則我根本沒有地圖。

回答

2

您需要添加一個事件偵聽器google.maps.Map ZOOM_CHANGED事件

var NWlayer1 = new google.maps.KmlLayer({ 
    preserveViewport: true, 
    url: "http://www.example.com/Google/ShowPointsOnly.kml" + url_end 
    }); 
var NWlayer2 = new google.maps.KmlLayer({ 
    preserveViewport: true, 
    url: "http://www.example.com/Google/ShowAll.kml" + url_end 
    }); 
google.maps.event.addListener(map, 'zoom_changed', function() { 
    if (map.getZoom() > 18){ 
    NWlayer1.setMap(map); 
    NWlayer2.setMap(null); 
    } else { 
    NWlayer1.setMap(null); 
    NWlayer2.setMap(map); 
    } 
}); 
+0

通過這樣改變它,頁面加載,沒有任何點或多邊形。縮放一個級別然後添加點和多邊形,但是縮放超過級別18會使其跳回級別15.該頁面位於http://www.noosawaters.org/Google/noosawaters_test2.html。 KML文件是正確的,因爲它們在沒有任何裝飾的情況下獨立加載時可以正常加載。 –

+0

要讓其中一個圖層默認顯示,請在初始化地圖時調用setMap(地圖)。要停止KmlLayer自動縮放以顯示其內容,請向KmlLayer – geocodezip

+0

Perfect添加[{preserveViewport:true}](https://developers.google.com/maps/documentation/javascript/reference#KmlLayerOptions)選項。非常感謝。這是一個陡峭而有趣的學習曲線。 –