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

Posted

技术标签:

【中文标题】使用 kml 文件时,Google 地图缩放被覆盖【英文标题】:Google Maps zoom gets overridden, when using a kml file 【发布时间】:2012-01-01 12:52:57 【问题描述】:

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

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

【问题讨论】:

【参考方案1】:

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

您可以使用google.maps.KmlLayerOptions 对象的preserveViewport 属性更改默认行为。如果您将其设置为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 图层时地图始终居中(但不缩放),请利用 google.maps.KmlLayer 对象的 defaultviewport_changed 事件。您必须将地图中心设置为 kml 图层默认视口的中心。当 kml 层的内容被加载并计算其默认视口时触发该事件。

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

【讨论】:

谢谢,但是当我设置更高的缩放级别比如 18 时,标记不会变得可见,要么它们根本不出现,要么我需要将它们居中以使它们可见,我怎么总是使确保标记出现在靠近中心的地图中 我更新了答案。现在,您可以立即使地图以 kml 图层中的标记位置为中心。 实际上我在地图上根据位置有某些标记,在页面加载时,我应该能够看到所有标记,如果我单击特定市场附近的某个地方,我希望它放大.我也更新了代码,但看起来它使用了错误的 js 文件:jsfiddle.net/WPXWX/1 我想你应该把它作为一个新问题发布,它离你原来的问题太远了。 好的,但我感谢您在这方面的帮助。有了我的第一个问题,我的小提琴正确吗

以上是关于使用 kml 文件时,Google 地图缩放被覆盖的主要内容,如果未能解决你的问题,请参考以下文章

如何覆盖谷歌地图中的 KML 颜色?

使用“我的地图”中的.kml文件的Google地图API;

在谷歌地图上覆盖 ESRI shapefile 的最佳方法?

Google 地图 - KML 图层未出现在地图上

python 构建要在Google地球或Google地图(MyMaps)中使用的KML文件

谷歌地图 KML 图层初始缩放和居中