2014-12-01 82 views
0

我正在嘗試將多個kml圖層添加到可以用複選框打開和關閉的地圖。我得到了那部分工作(耶!)。當我點擊圖層打開它時,它會放大(這很好),但是當我點擊去掉圖層時,它會縮小到我的地圖範圍。我如何獲得它來保存最後加載的圖層的縮放?下面的代碼。在複選框上保留Google地圖縮放至kml圖層單擊

<script> 
var map; 
var watershedLayer = new google.maps.KmlLayer ({ 
url: 'http://mvihes.bc.ca/mapping/watersheds.kmz' 
}); 

var ere1949Layer = new google.maps.KmlLayer ({ 
url: 'http://mvihes.bc.ca/mapping/ere1949.kmz' 
}); 
function initialize() { 
var parksville= new google.maps.LatLng(49.316786, -124.308768); 
var mapOptions = { 
zoom: 9, 
center: parksville 
}; 
map = new google.maps.Map(document.getElementById('map-canvas'), mapOptions); 
check(); 
} 
function check() 
{ 
    if(document.getElementById('watersheds').checked) 
     {watershedLayer.setMap(map);} 
    else 
     {watershedLayer.setMap(null);} 
    if(document.getElementById('ere1949').checked) 
     {ere1949Layer.setMap(map);} 
    else 
     {ere1949Layer.setMap(null);} 

} 
google.maps.event.addDomListener(window, 'load', initialize); 

</script> 

我試過使用preserveViewport函數,但它只是停止放大圖層,這不是我想要的。我是新來的javaScript,所以可能我失去了明顯的東西......任何幫助將不勝感激!

jsfiddle

+1

在您的發佈代碼中沒有任何內容可以這樣做。請發佈[最小,完整,測試和可讀示例](http://stackoverflow.com/help/mcve)。 [jsfiddle你的代碼](http://jsfiddle.net/jhagmq7L/) – geocodezip 2014-12-01 20:45:24

回答

1

設置所選層的地圖屬性,只有當它尚未設定:

function check() 
{ 
    if(document.getElementById('watersheds').checked) 
     {if(!watershedLayer.getMap())watershedLayer.setMap(map);} 
    else 
     {watershedLayer.setMap(null);} 
    if(document.getElementById('ere1949').checked) 
     {if(!ere1949Layer.getMap())ere1949Layer.setMap(map);} 
    else 
     {ere1949Layer.setMap(null);} 

} 

http://jsfiddle.net/jhagmq7L/16/

+0

工作!非常感謝! – fearthainn 2014-12-02 01:07:22

0

您也可以將最大和最小縮放級別的地圖,在加載kml圖層時考慮全地圖縮放的東西。

// sets the min and max zoom levels of the map 
    var opt = { minZoom: 6, maxZoom: 18 }; 
    map.setOptions(opt);