2016-08-18 5 views
-1

私はマップをレンダリングし、その上に位置マーカーのセットを表示するためにGoogle Maps Javascript APIを使用しています。場所を取得するAJAX要求を通じて返されるデータの量を減らすために、私は、可視の場所だけを返す要求で境界ボックスの座標を送信しています。Google Maps JS API - getBounds()が常に定義されていない

私は現在の線に沿ってコードを持っている:私はマップが移動したときにgetBounds作品は(データを取得するためにサーバーに送信されている)Map.boundsを更新する必要があります方法を理解するよう

google.maps.event.addListener(Map.map, "bounds_changed", function() { 
    Map.bounds.north = Map.map.getBounds().getNorthEast().lat(); 
    Map.bounds.east = Map.map.getBounds().getNorthEast().lng(); 
    Map.bounds.south = Map.map.getBounds().getSouthWest().lat(); 
    Map.bounds.west = Map.map.getBounds().getSouthWest().lng(); 
    }); 

を。しかし、地図を作成するときにMap.boundsを設定することができないため、ロケーションの初期リクエストが失敗します。 Map.map.getBoundsgoogle.maps.event.addListener以外の場合は、getBoundsが定義されていないというエラーが表示されます。ユーザーがマップを読み込む前に、マップがロードされたら境界を設定するにはどうすればよいですか?

(私も同じ結果と"bounds_changed"に加えて"idle"を試してみました)

+0

はあなたの問題を示している[MCVE]お知らせください。投稿したコードは失敗しないはずです。 – geocodezip

+0

私が掲示したコードはうまくいきました。それが投稿された理由、それが動作する唯一のインスタンスです。他のコンテキストでgetBounds関数を使用すると、まだ定義されていないというエラーが表示されます(ただし、Google Mapsコールバックの中にあります)。私はこの正確なケースの外でgetBoundsを使用する例として、自分のコードに修正を求めているわけではありません。 – FatalKeystroke

+0

それは私には分かりませんでした。あなたが試したことのない、うまくいかなかった例が役に立つでしょう。 – geocodezip

答えて

0

GoogleマップのJavaScript APIは、イベントベースです。最初のbounds_changedイベントが発生する前にマップ上でgetBoundsを呼び出すと、動作しません。それが最初に設定された後はいつでも動作します。

例:

var map; 
 

 
function initMap() { 
 
    map = new google.maps.Map(document.getElementById('map'), { 
 
    center: { 
 
     lat: 42, 
 
     lng: -72 
 
    }, 
 
    zoom: 8 
 
    }); 
 
} 
 
google.maps.event.addDomListener(window, 'load', initMap);
html, 
 
body, 
 
#map { 
 
    height: 100%; 
 
    width: 100%; 
 
}
<script src="https://maps.googleapis.com/maps/api/js"></script> 
 
<input type="button" value="get bounds" onclick="document.getElementById('bounds').innerHTML = map.getBounds().toUrlValue(6);" /> 
 
<div id="bounds"></div> 
 
<div id="map"></div>

関連する問題