我正在从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>

10-08 03:45