谷歌地图 KML 图层不会缩放



我有一个使用API V3的嵌入式谷歌地图,但我不能让它默认缩放到1以外的任何东西。

我的JS在头部是:

            var map1;
            var src1 = 'https://latitude.google.com/latitude/apps/badge/api?user=8963899225283336226&type=kml';
            function initialize1() {
                map1 = new google.maps.Map(document.getElementById('map-canvas'), {
                zoom: 7,
                mapTypeId: google.maps.MapTypeId.TERRAIN
              });
              loadKmlLayer1(src1, map1);
            } 
            google.maps.event.addDomListener(window, 'load', initialize1);
            function loadKmlLayer1(src1, map1) {
              var kmlLayer1 = new google.maps.KmlLayer(src1, {
                suppressInfoWindows: false,
                clickable: true,
                preserveViewport: false,
                map: map1
              });
            }

HTML只是地图画布的div,没有别的了。看看这里的一些线程,它看起来像是与检测视口和重置边界有关。

我发现了一个线程,建议添加如下内容:

            google.maps.event.addListener(kmlLayer1, 'defaultviewport_changed', function() {
            var bounds = kmlLayer1.getDefaultViewport();
            map.setCenter(bounds.getCenter());
            })

,但没有区别。我绝不是一个JS专家,虽然我基本上理解上面大部分代码中发生的事情,但我还不够高级,无法即兴发挥,甚至无法理解它应该放在哪里。

谢谢Molle。

我增强了这个,它可以工作:

google.maps.event.addListener(kmlLayer, 'status_changed', function () {
  console.log('kml loaded:');
  google.maps.event.addListenerOnce(map, 'zoom_changed', function () {
    console.log('zoom_changed:');
    map.setZoom(7);
    map.setCenter(new google.maps.LatLng(0, 0));
  });
});

API将设置视口以包含所有kml功能,这些功能将覆盖缩放设置。

缩放改变后重置缩放(就像加载KML-Layer时一样)

google.maps.event.addListenerOnce(map1, 'zoom_changed', function() {
  this.setZoom(7);
})

最新更新