我正在从v2切换到v3的Google Maps api,但gMap.getBounds()
函数出现问题。
初始化后,我需要获取 map 的边界。
这是我的JavaScript代码:
var gMap;
$(document).ready(
function() {
var latlng = new google.maps.LatLng(55.755327, 37.622166);
var myOptions = {
zoom: 12,
center: latlng,
mapTypeId: google.maps.MapTypeId.ROADMAP
};
gMap = new google.maps.Map(document.getElementById("GoogleMapControl"), myOptions);
alert(gMap.getBounds());
}
);
因此,现在它提醒我
gMap.getBounds()
未定义。我尝试在click事件中获取getBounds值,它对我来说很好,但是在加载映射事件中我无法获得相同的结果。
在Google Maps API v2中加载文档时,getBounds也可以正常工作,但在V3中失败。
您能帮我解决这个问题吗?
最佳答案
在v3 API的早期,getBounds()
方法要求 map 图块完成加载,以返回正确的结果。但是,现在看来您可以收听bounds_changed
事件,该事件甚至在tilesloaded
事件之前就已触发:
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8"/>
<title>Google Maps v3 - getBounds is undefined</title>
<script src="http://maps.google.com/maps/api/js?sensor=false"
type="text/javascript"></script>
</head>
<body>
<div id="map" style="width: 500px; height: 350px;"></div>
<script type="text/javascript">
var map = new google.maps.Map(document.getElementById("map"), {
zoom: 12,
center: new google.maps.LatLng(55.755327, 37.622166),
mapTypeId: google.maps.MapTypeId.ROADMAP
});
google.maps.event.addListener(map, 'bounds_changed', function() {
alert(map.getBounds());
});
</script>
</body>
</html>