本文介绍了Google地图map.getBounds()在调用map.fitBounds后立即生效的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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



重现这个的代码如下:

 <!DOCTYPE html PUBLIC -  // W3C // DTD XHTML 1.0 Strict // ENhttp://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd > 
< html xmlns =http://www.w3.org/1999/xhtmlxmlns:v =urn:schemas-microsoft-com:vml>
< head>
< meta http-equiv =content-typecontent =text / html; charset = utf-8/>
< script type =text / javascriptsrc =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的说明:

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



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

解决方案
您必须在bounds_changed事件后获取边界。

I'm calling getBounds() directly after a call to fitBounds(), and I thought I'd get a valid bound back as the map recenters and zooms to fit the bounds. Unfortunately, getBounds() is returning nil.

The code to reproduce this is as follows:

<!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>

Is there something I'm missing? I haven't been able to find anything in the docs about this situation. The nearest I get is a note on getBounds that says:

Note that getZoom returns undefined, too. Does fitBounds() not set this value?

EDITI've updated the code with a default zoom and center, as per Marcelo's suggestions.

解决方案

You will have to get the bounds after the bounds_changed event.

这篇关于Google地图map.getBounds()在调用map.fitBounds后立即生效的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

10-12 19:12