Javascript 保留谷歌地图缩放到kml层的复选框单击

Javascript 保留谷歌地图缩放到kml层的复选框单击,javascript,google-maps,kml,Javascript,Google Maps,Kml,我正在尝试将多个kml图层添加到可以使用复选框打开和关闭的地图中。我让那部分工作(耶!)。当我单击某个图层以将其打开时,它会放大(这很好),但当我取消单击以关闭该图层时,它会缩小到我的地图范围。如何使其保持上次加载图层的缩放?代码如下 <script> var map; var watershedLayer = new google.maps.KmlLayer ({ url: 'http://mvihes.bc.ca/mapping/watersheds.kmz' }); var

我正在尝试将多个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>

var映射;
var watershedLayer=新建google.maps.KmlLayer({
网址:'http://mvihes.bc.ca/mapping/watersheds.kmz'
});
var ere1949Layer=new google.maps.KmlLayer({
网址:'http://mvihes.bc.ca/mapping/ere1949.kmz'
});
函数初始化(){
var parksville=new google.maps.LatLng(49.316786,-124.308768);
变量映射选项={
缩放:9,
中心:帕克斯维尔
};
map=new google.maps.map(document.getElementById('map-canvas'),mapOptions);
检查();
}
函数检查()
{
if(document.getElementById('watersheds')。选中)
{流域图层.setMap(map);}
其他的
{watershedLayer.setMap(null);}
if(document.getElementById('ere1949')。选中)
{ere1949Layer.setMap(map);}
其他的
{ere1949Layer.setMap(null);}
}
google.maps.event.addDomListener(窗口“加载”,初始化);
我尝试使用preserveViewport函数,但它只是停止了层的放大,这不是我想要的。我是javaScript新手,所以可能我遗漏了一些明显的东西…任何帮助都将不胜感激


仅当尚未设置选定图层的贴图特性时,才设置该图层的贴图特性:

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);}

}

你也可以将max和min缩放级别附加到地图上,在加载KML层时要考虑整个地图缩放。
// sets the min and max zoom levels of the map
    var opt = { minZoom: 6, maxZoom: 18 };
    map.setOptions(opt);

您发布的代码中没有任何内容可以这样做。请发一封信。