Google地图map.getBounds()在调用map.fitBounds后立即生效

我在调用fitBounds()之后直接调用了getBounds(),并且我认为当地图缩回并缩放以适合边界时,我会得到有效的边界。 不幸的是,getBounds()返回零。

重现此代码如下所示:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:v="urn:schemas-microsoft-com:vml"> 
    <head> 
        <meta http-equiv="content-type" content="text/html; charset=utf-8"/> 
        <script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=true"></script>

        <style>
            #map {
                width: 800px;
                height: 400px;
            }
        </style>

    </head>
    <body>
        <div id='map'></div>

        <script>
            var myLatlng1 = new google.maps.LatLng(-38.397, 150.644);
            var myLatlng2 = new google.maps.LatLng(-34.897, 150.844);
            var myLatLngBounds = new google.maps.LatLngBounds(myLatlng1, myLatlng2);

            var myOptions = {
                  mapTypeId: google.maps.MapTypeId.ROADMAP,
                  center: new google.maps.LatLng(0, 0),
                  zoom: 0
            }

            var map = new google.maps.Map(document.getElementById("map"), myOptions);

            map.fitBounds(myLatLngBounds);

            console.log(map.getMapTypeId());
            console.log(map.getZoom());
            console.log(map.getBounds());
        </script>
    </body>
</html>

有什么我失踪? 我一直无法找到有关这种情况的文档中的任何内容。 我最近得到的是一个关于getBounds的说明:

如果地图尚未初始化(即mapType仍为空),或未设置中心和缩放,则结果为空。

请注意,getZoom也会返回undefined。 fitBounds()没有设置这个值吗?

编辑我已根据Marcelo的建议更新了默认缩放和居中的代码。


你将不得不在bounds_changed事件之后获得界限。


正如@CrazyEnigma建议的那样,您可以在触发bounds_changed事件后获取边界:

map.fitBounds(myLatLngBounds);

google.maps.event.addListener(map, 'bounds_changed', function() {
  console.log(map.getMapTypeId());
  console.log(map.getZoom());
  console.log(map.getBounds());
});

以上将打印到您的控制台:

roadmap
6
Object

请注意,如果您只需要getBounds并执行一次操作,则应该使用addListenerOnce (Thanks,@Tomas)替换addListener


在tileloaded时使用addListenerOnce

google.maps.event.addListenerOnce(map, 'tilesloaded', function(){ 
map.setCenter(myLatLngBounds)
});
链接地址: http://www.djcxy.com/p/81531.html

上一篇: Google Maps map.getBounds() immediately after a call to map.fitBounds

下一篇: google maps fitBounds callback