我正在使用v3版的地图API在地图上绘制一系列标记。
在v2中,我的代码如下:
bounds = new GLatLngBounds();
... loop thru and put markers on map ...
bounds.extend(point);
... end looping
map.setCenter(bounds.getCenter());
var level = map.getBoundsZoomLevel(bounds);
if ( level == 1 )
level = 5;
map.setZoom(level > 6 ? 6 : level);
这样做可以确保地图上始终显示适当级别的细节。
我正在尝试在v3中复制此功能,但是setZoom和fitBounds似乎并不合作:
... loop thru and put markers on the map
var ll = new google.maps.LatLng(p.lat,p.lng);
bounds.extend(ll);
... end loop
var zoom = map.getZoom();
map.setZoom(zoom > 6 ? 6 : zoom);
map.fitBounds(bounds);
我尝试了不同的排列方式(例如将fitBounds放在setZoom之前),但是我对setZoom所做的任何操作似乎都不会影响地图。我有什么遗漏吗?有没有办法解决这个问题?
google.maps.event.addListenerOnce()
,这样您就不必手动删除监听器了。 - pstadlergoogle.maps.event.addListenerOnce(map, 'bounds_changed', function() { this.setZoom(Math.min(15, this.getZoom())); });
- sbazoom_changed
。我正在在map.fitBounds(bounds);
之前使用zoom_changed
,在 Chrome 上运行得非常好。 - Milk Man