Google maps v2 bounds изменить событие - PullRequest
1 голос
/ 09 февраля 2010

Я использую Google Maps v2 в своем веб-приложении. Я хочу вызвать базу данных для получения записей, когда границы карты изменяются из-за масштабирования или перетаскивания. До сих пор я использовал обработчик событий tileloaded для этого, предполагая, что границы карты будут меняться при загрузке всех плиток (я также хочу пояснить это предположение).

Когда я делаю увеличение / уменьшение масштаба и обрабатываю событие zoomend, чтобы установить флаг, который проверяется в обработчике событий загруженного фрагмента, который затем запрашивает базу данных, используя новые границы. Это работает нормально до тех пор, пока событие загрузки загружено ПОСЛЕ события zoomend. Но (досадно) много раз, когда он запускается ДО события масштабирования, поэтому в этом случае флаг масштабирования не будет установлен в обработчике событий tileloaded, и вызов db не происходит.

То же самое происходит для перетаскивания. А также многократно загружаемое событие не запускается, когда мы немного перетаскиваем карту. Использует ли Google какой-либо механизм кэширования для фрагментов карты, если мы лишь немного перетаскиваем (просто дикое предположение).

Я хочу, чтобы для v2 было запущено что-то вроде события bounds_changed, пожалуйста, помогите мне.

1 Ответ

2 голосов
/ 09 февраля 2010

Я бы использовал событие moveend . Она будет срабатывать всякий раз, когда карта масштабируется или перемещается (при наведении мыши).

var moveListener = GEvent.addListener(map, "moveend", function() {
    var bounds = map.getBounds();
    var sw = bounds.getSouthWest();
    var ne = bounds.getNorthEast();

    var sBound = sw.lat();
    var wBound = sw.lng();
    var nBound = ne.lat();
    var eBound = ne.lng();

    // AJAX call to the database with the map bounds
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...