如何使用Google Maps API v3多次设置缩放?

时间:2012-11-13 18:47:52

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

我有这样的Google地图:

var map_options = {        
    mapTypeId: google.maps.MapTypeId.ROADMAP,
    streetViewControl: false
};
var map = new google.maps.Map(mapDiv, map_options);

我执行ajax调用,在地图上放置一些标记,并在该调用beforeSend中根据用户选择的位置更改地图的缩放级别。这一切都很好,花花公子......

$.ajax({
    url: myServiceUrl,
    dataType: 'jsonp',
    beforeSend: function () {                    
        setMapZoom();
    },            
    success: function (data) {
        //do work
    },
    error: function (jqXHR, textStatus, errorThrown) {
        alert(errorThrown);
    }            
});

function setMapZoom() {    
    var z_level = getMapZoomLevel(googleplace.geometry.viewport);
    map.setCenter(googleplace.geometry.location);
    map.setZoom(z_level);
}

起初这根本不起作用,因为地图api的调用是异步的......这就是我将缩放方法放在beforeSend中的原因。

然而,现在我的问题是它只执行缩放一次。我加载了加拿大安大略省多伦多市的地图 - 它以多伦多为中心,缩小到5级 - 完美。

然后我转到美国佛罗里达州的迈阿密 - 它以迈阿密为中心很好,但它确定缩放为9级(而不是5级)调用map.setZoom(9) - 但缩放保持在5。

我感谢任何反馈。 :)

谢谢!

2 个答案:

答案 0 :(得分:0)

您需要视口,为什么不使用它?

map.fitBounds(googleplace.geometry.viewport);

答案 1 :(得分:0)

<强>解决:

事实证明......这里的编码员正在调用一些代码来清除用户定义的侦听器上的zoom事件。他不知道谷歌定义的听众也是如此......:)

也许这将有助于将来的某些人。