【发布时间】:2011-01-21 20:19:31
【问题描述】:
我正在使用 Google Maps API v2。我在地图上添加标记,然后缩放以适应这些标记。如果地图可见我这样做很好。但如果不是 - 例如,如果我有一个标签条,并且在页面加载时未选择地图的标签 - 那么当我显示地图时,缩放级别和中心是错误的。
这是一个简单的测试用例(使用 jQuery):
<script type="text/javascript">
var scale = Math.random() * 20;
$(document).ready(function() {
var $container = $('#container');
// $container.hide();
var map = new GMap2($('#map')[0]);
$container.show();
var markerBounds = new GLatLngBounds();
for (var i = 0; i < 10; i++) {
var randomPoint = new GLatLng(38.935394 + (Math.random() - 0.5) * scale, -77.061382 + (Math.random() - 0.5) * scale);
map.addOverlay(new GMarker(randomPoint));
markerBounds.extend(randomPoint);
}
map.setCenter(markerBounds.getCenter(), map.getBoundsZoomLevel(markerBounds));
});
</script>
<div id="container">
<div id="map" style="margin: 100px; width: 450px; height: 300px;"></div>
</div>
这可以正常工作,但如果您取消注释 $container.hide(),它就会全部失效。
有没有办法让 Google Maps API 在不可见的 div 上正常工作?
【问题讨论】:
-
getBounds(在 getBoundsZoomLevel 中调用)返回地图的可见区域,所以我假设您必须缩放以适应标签条的点击事件。 v3中的方法总结优于v2中的描述:v3"返回当前视口的lat/lng边界。如果地图还没有初始化(即mapType仍然为null),或者center和zoom还没有已设置,则结果为空。”我认为 getBounds 在版本之间没有太大变化。
标签: google-maps google-maps-markers google-maps-api-2