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

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

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

【问题讨论】:

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


    【解决方案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
    • 我想你应该把它作为一个新问题发布,它离你原来的问题太远了。
    • 好的,但我感谢您在这方面的帮助。有了我的第一个问题,我的小提琴正确吗
    猜你喜欢
    • 2012-11-03
    • 1970-01-01
    • 2015-03-22
    • 1970-01-01
    • 1970-01-01
    • 2010-11-10
    • 2013-09-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多