10

Maps API v3 を使用します。Google のドキュメントによると、マップ コンテナーがプログラムでサイズ変更された場合、マップのサイズ変更イベントを手動でトリガーする必要があります。

Resize イベント: 開発者は、div のサイズが変更されたときにマップ上でこのイベントをトリガーする必要があります。

したがって、私は使用しています:

google.maps.event.trigger(map, 'resize');

サイズ変更されたマップ コンテナーの新しい境界に基づいてマーカーを更新するには、どのリスナーを使用すればよいですか?

google.maps.event.addListener(map, 'resize', function() {

    console.log(map.getBounds());
});

上記は、サイズ変更前の境界を示しています。

4

3 に答える 3

14

マップのサイズが変更されるたびに、境界が変更されます。したがって、bounds_changedイベントを使用できます。

google.maps.event.addListener(map, 'bounds_changed', function() {
    var bounds = map.getBounds();
});

次の説明があります。

このイベントは、ビューポートの境界が変更されたときに発生します。


マップのサイズが変更された後にのみイベントが呼び出されるようにする場合は、次のようにブール変数を使用して、マップのサイズが変更されたかどうかを追跡できます。

var mapResized = false;

resizeその後、関数をトリガーするたびに、mapResized変数を に設定できますtrue。関数を使用してこれを行うことができます。

function resizeMap(map) {
    google.maps.event.trigger(map, 'resize');
    mapResized = true;
}

次に、イベントでは、がtrueのbounds_changed場合にのみ呼び出しに反応し、その後に設定できます:mapResizedmapResizedfalse

google.maps.event.addListener(map, 'bounds_changed', function() {
    if (mapResized) {
        // react here
    }
    mapResized = false;
}
于 2012-08-19T22:24:14.583 に答える
2

境界がいつ変更されるかを知りたい場合は、「bounds_changed」イベントをリッスンする必要があります

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

サイズ変更イベントをトリガーした後、最初の境界変更イベントのみが必要な場合は、次を使用できます。

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

サイズ変更イベントをトリガーする直前。

于 2012-08-19T22:24:00.083 に答える