1. ホーム
  2. javascript

[解決済み] Google Maps Api v3 - getBounds が未定義です。

2023-07-05 04:20:36

質問

google maps api を v2 から v3 に変更したところ、以下の問題が発生しました。 gMap.getBounds() 関数に問題が発生しました。

初期化後のマップの境界を取得する必要があります。

以下は私の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の値を取得しようとしたところ、私の場合はうまくいきましたが、load mapイベントでは同じ結果を得ることができません。

また、Google Maps API v2ではドキュメントの読み込み中にgetBoundsは正常に動作しますが、V3では失敗します。

この問題を解決するために私を助けてもらえますか?

どのように解決するのですか?

v3 API の初期には getBounds() メソッドは、正しい結果を返すためにマップタイルの読み込みが終了していることを必要としました。しかし現在では 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>