質問

fitbounds()への呼び出しの直後にgetbounds()を呼び出していますが、最近のマップとズームとしてズームするために有効なバインドを取得すると思いました。残念ながら、getBounds()はnilを返しています。

これを再現するためのコードは次のとおりです。

<!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はまだnullです)、または中心とズームが設定されていない場合、結果はnullです。

Getzoomも定義されていないことに注意してください。 fitbounds()はこの値を設定しませんか?

編集マルセロの提案に従って、デフォルトのズームとセンターでコードを更新しました。

役に立ちましたか?

解決

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 そして、一度何かをしてください、あなたは交換する必要があります addListeneraddListenerOnce (ありがとう、@tomas)。

タイルロード時にaddlisteneronceを使用します

google.maps.event.addListenerOnce(map, 'tilesloaded', function(){ 
map.setCenter(myLatLngBounds)
});

答えはあなた自身の引用です。マップを初期化するには、センターとズームを設定し、ズームする必要があります。

Mapoptionsオブジェクトの仕様のドキュメントでは、中心とズームの値が次のようにマークされていることに注意してください。 必要:

http://code.google.com/apis/maps/documentation/javascript/reference.html#mapoptions

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top