Карты Google обнаруживают щелчок маркера внутри event.addlistener

В настоящее время у меня есть прослушиватель bounds_changed, который очищает наложения маркеров, а затем воссоздает маркеры внутри границ карты.

Однако всякий раз, когда щелкают по маркеру и карта перемещается, информационное окно не отображается. Поскольку он уничтожен. Как мне добавить оператор if к следующему, который определит, был ли сделан щелчок по маркеру, и если да, то больше ничего не делать clearOverlays и createMarkers.

google.maps.event.addListener(map, 'bounds_changed', function() { 
        //alert(map.getBounds()); 
        clearOverlays();
        createMarkers(map, mgr);          
    });

Например

if(marker.click) {
} else {
    clearOverlays();
    createMarkers(map, mgr);      
}        

Окончательный рабочий код.

google.maps.event.addListener(map, 'bounds_changed', function() { 
        if(checkevent == false)
        {
            //alert(checkevent);
            clearOverlays();
            createMarkers(map, mgr);          
        }
    }); 

и в прослушивателе для маркера нажмите

google.maps.event.addListener(marker5, 'click', function() { checkevent = true;  infowindow5.open(map,marker5); setTimeout('checkevent = false', 3000); });

person Prescient    schedule 21.06.2012    source источник


Ответы (1)


Предполагая, что у вас есть прослушиватель событий щелчка по маркерам, установите переменную состояния с внешней областью действия для прослушивателя событий. В вашем слушателе bounds_changed проверьте переменную состояния. Всегда сбрасывайте переменную состояния в конце прослушивателя bound_changed.

person Bryce    schedule 21.06.2012
comment
Я установил для переменной checkevent значение false. Затем добавьте к слушателю события checkevent = true и в конце checkevent = false. Мне пришлось установить тайм-аут около 3 секунд, чтобы заставить работать плавно, fyi. Но в остальном работает как шарм! Спасибо - person Prescient; 21.06.2012