使用kml文件时,Google地图缩放会被覆盖

时间:2011-11-18 19:15:27

标签: api google-maps google-maps-api-3 maps kml

如何在kml文件中指定谷歌地图的缩放级别,或者为什么加载此文件时我的缩放级别会被覆盖。我的问题实际上是如何控制以下链接的地图缩放:

http://code.google.com/apis/maps/documentation/javascript/examples/layer-kml-features.html

1 个答案:

答案 0 :(得分:44)

默认情况下,地图居中并缩放到kml图层内容的边界框。

您可以使用preserveViewport对象的google.maps.KmlLayerOptions属性更改默认行为。如果您将其设置为true,则地图不会居中并缩放。

在示例中,使用:

var nyLayer = new google.maps.KmlLayer(
                  'http://www.searcharoo.net/SearchKml/newyork.kml',
                  {
                      suppressInfoWindows: true,
                      map: map,
                      preserveViewport: true
                  });

如果您想稍后居中并缩放到kml图层的内容,请使用:

var bounds = nyLayer.getDefaultViewport();
map.fitBounds(bounds);

修改

如果希望在加载kml图层时地图始终居中(但不缩放),请使用defaultviewport_changed对象的google.maps.KmlLayer事件。您必须将地图中心设置为kml图层默认视口的中心。加载kml图层的内容并计算其默认视口时,将触发该事件。

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