【问题标题】:Why isn't Google Maps changing zoom when asked to do so?为什么 Google 地图在要求时不更改缩放比例?
【发布时间】:2011-07-11 08:43:16
【问题描述】:

我这里有这段代码:

function ShowSelection(addr){
    var latLngBounds;

    geocoder.geocode({ "address": addr }, function(results, status) {
        if (status == google.maps.GeocoderStatus.OK) {

            if (selectionArea === undefined || selectionArea === null) {
                selectionArea = new google.maps.Rectangle({
                    map: map
                });
            }

            latLngBounds = results[0].geometry.bounds;
            selectionArea.setBounds(latLngBounds);

            map.panTo(latLngBounds.getCenter());
            map.setZoom(12);
        }
        else {
            alert("Geocode was not successful for the following reason: " + status);
        }
    });
}

我的问题是,当我调用 map.setZoom(12) 时,地图只是保持在原来的缩放级别。

我想更好的解决方案是将其设置为在地图窗口中显示完整 selectionArea 的缩放级别。

所以我想这是一个双重问题:

  1. 如何在调用 setZoom() 时更改缩放级别?
  2. 如何设置缩放级别,以便在地图上绘制的 Rectangle 完全适合地图 div 的边界? (我正在寻找的预期效果是让地图平移到 selectionArea 的中心点,并且地图的边界大于选择区域的边界,即整个 selectionArea 在地图上不可见滚动。

【问题讨论】:

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


    【解决方案1】:

    我不确定我是否理解您的问题。 您发布的代码对地址进行地理编码并绘制一个与地图边界大小相同的矩形。 所以...

    如何更改缩放级别 调用 setZoom() 时?

    嗯...看起来还可以。检查您的地图缩放是否尚未设置为 12

    我将如何设置缩放级别,以便 在地图上绘制的矩形将 完全符合 地图div?

    您可以使地图适合边界

    map.fitBounds(latLngBounds);
    

    【讨论】:

    • 是的,当我单击在我的代码 sn-p 中触发事件的按钮时,我已确认我已缩小到缩放 4。那个 map.setZoom() 调用并没有做一件我能说的该死的事情。
    • @Ryan 我已经在 jsfiddle 上测试了setZoom(),它的工作方式与您所说的一样。你设置了界限还是什么?
    • 这里是我的代码的工作 js-fiddle 的链接,以获得您在左上角的搜索框中输入邮政编码或城市/州组合的不良效果(不缩放)并单击“中心”按钮。您会看到平移发生但缩放没有发生。 jsfiddle.net/pbwfL/1
    • @Ryan 你在 ClearSelection 函数中写了if (map != null) google.maps.event.clearInstanceListeners(map),因此也删除了 zoom_changed 监听器。
    • 知道了!非常感谢您花时间帮助我。我认为调用 clearInstanceListeners 方法只会删除我放在对象上的任何自定义侦听器。很高兴知道。
    猜你喜欢
    • 1970-01-01
    • 2018-05-17
    • 2015-10-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-11
    • 1970-01-01
    相关资源
    最近更新 更多