API карт Google 3 removeListener не работает / ведет себя странно

У меня есть прослушиватель click для каждого из моих маркеров, вызывающих функцию displayInfo, a custom infoBox ..

google.maps.event.addListener(markers[i], 'click', function() {
        //stop updating markers
         google.maps.event.removeListener(updateMarkersProcess);

        //call display custom infowindow function
        displayInfo(this);
    });

У меня есть слушатель bounds_change на моей карте для «привязки» настраиваемого информационного окна к маркеру. Примерно так:

function displayInfo(marker) {

 var e = $('infobox');

overlay.getPanes().floatPane.appendChild(e);

displayInfoProcess = google.maps.event.addListener(map, 'bounds_changed', function() {

    show('infobox');

    var markerOffset = overlay.getProjection().fromLatLngToDivPixel(marker.position);

    e.style.top = markerOffset.y + 20 + 'px';
    e.style.left = markerOffset.x - 40 + 'px';

    e.innerHTML = marker.store + '<br><em>' + convertDistance(marker.distance);   

});
map.panTo(marker.position); 
}

Затем я нажимаю ] на карте, чтобы скрыть информационное окно и остановить прослушиватель bounds_change ...

[УДАЛИТЬ КОД СЛУШАТЕЛЯ ЗДЕСЬ]

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

       google.maps.event.removeListener(displayInfoProcess);
       // google.maps.event.clearListeners(map, 'bounds_changed');
       hide('infobox');

    });

Это скрывает информационное окно, но дело в том, что это, похоже, не удаляет слушателя. Вот распечатка из журнала:

// Перед щелчком по маркеру (без слушателя)

displayInfoProcess null

// После щелчка по маркеру (слушателю)

displayInfoProcess Ue b: qh d: "bounds_changed" e: function () { id: 1480 j: ноль л: 0 proto : Ue

// После щелчка по карте (все еще слушатель)

displayInfoProcess Ue b: ноль d: "bounds_changed" e: null id: 1480 j: ноль l: 0 proto : Ue

И сделать вещи действительно странными, если я ..

1) Щелкните по маркеру Это показывает infoBox1

2) Щелкните другой маркер Это показывает infoBox2 вместо 1

3) Щелкните карту Это скрывает infoBox2

4) Прокрутите карту

.. появится информационное окно (1) от ПЕРВОГО маркера !!

Есть ли лекарство ??

0
задан jenswirf 12 January 2012 в 13:44
поделиться