我有这样的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。
我感谢任何反馈。 :)
谢谢!
答案 0 :(得分:0)
您需要视口,为什么不使用它?
map.fitBounds(googleplace.geometry.viewport);
答案 1 :(得分:0)
<强>解决:强>
事实证明......这里的编码员正在调用一些代码来清除用户定义的侦听器上的zoom事件。他不知道谷歌定义的听众也是如此......:)
也许这将有助于将来的某些人。