Google Maps V3 does not remove event listener

I have a problem with Google Maps API v3. I am trying to remove the mouse listener when the zoom changes.

Here is my code:

$(document).ready(function() {

    var myOptions = {
        ...
    };

    var map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);

    function colormaps(map) {
        var newmap = map;
        var piemonteCoords = [
            ...
        ];        
        var piemontePolygon = new google.maps.Polygon({
            ...
        });         
        piemontePolygon.setMap(newmap);
        google.maps.event.addListener(piemontePolygon, 'mouseover', function(event) {
            var prova = event;
            showInfo(prova, newmap, 'Italy');
        });

        google.maps.event.addListener(newmap, 'zoom_changed', function() {
            zoomLevel = map.getZoom();
            if (zoomLevel >= 6) {
                google.maps.event.clearListeners(newmap, 'mouseover');
            }
            else {
                ...
            }
        } //fine colormaps
        google.maps.event.addDomListener(window, 'load', colormaps(map));
    });

When the zoom reaches the target level, the listener is not removed. What's wrong?

+4
source share
1 answer

You add a listener to the object piemontePolygon, but newmapit is from the object newmap, which is probably wrong (I'm not an expert in this area, so I'm not sure).

Try to do it like this:

google.maps.event.clearListeners(piemontePolygon, 'mouseover');


EDIT:
According to the documentation, you can try this with a different approach if the above code does not work.


1 ( ):

google.maps.event.clearInstanceListeners(piemontePolygon);


2:

var listener1 = google.maps.event.addListener(piemontePolygon, 'mouseover', function(
    var prova = event;
    showInfo(prova, newmap, 'Italy')
});

google.maps.event.removeListener(listener1);
+8

Source: https://habr.com/ru/post/1531224/


All Articles