2012-11-13 45 views
0

我有一个谷歌地图,像这样:如何使用Google Maps API v3多次设置缩放?

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

我认为你的代码在地图仍然加载瓷砖期间设置了缩放(9)。 – wf9a5m75

+0

setMapZoom()函数在标记被请求之前被调用.. –

+0

我明白了。你能给我一个你的网页链接吗? – wf9a5m75

回答

0

你有期望的视口,你为什么不使用它?

map.fitBounds(googleplace.geometry.viewport); 
+0

我试过这个。我相信现在在jsbin中设置第一个评论者是正确的之后。标记的加载时间过长。 –

0

解决:

事实证明..老乡编码器在这里打电话一些代码来清除变焦事件用户定义的监听器。他不知道这也清楚谷歌定义的听众.. :)

也许这将有助于未来的人。

相关问题