ユーザーがマップを移動してズームを変更したときに「bounds_changed」イベントをリッスンしたいのですが、プログラムが setCenter または setZoom メソッドを呼び出したときに発生させたくありません。そこで、センターを設定する前にイベントを削除してから、再度追加してみました。ただし、機能しませんでした。私のイベントはまだ発生しています。
var currentBoundsListener = null;
function addBoundsChangedListener() {
currentBoundsListener = google.maps.event.addListener(map, 'bounds_changed', function () {
// Whatever.
});
}
function setCenter(lat, lng) {
google.maps.event.removeListener(currentBoundsListener);
var geo = new google.maps.LatLng(lat, lng);
map.setCenter(geo);
addBoundsChangedListener();
}
イベントが非同期化されているように、新しいリスナーを追加した後、マップはbounds_changedイベントを作成していると思います。