Google Maps V3不会删除事件侦听器

And*_*rea 4 javascript google-maps listener google-maps-api-3

我对Google Maps API v3有疑问.我正在尝试在缩放更改时删除鼠标悬停侦听器.

这是我的代码:

$(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));
    });
Run Code Online (Sandbox Code Playgroud)

当缩放达到目标级别时,不会删除侦听器.怎么了?

Jan*_*n.J 9

你正在向piemontePolygon对象添加监听器,但是你要从newmap对象中清除它,这可能是错误的(我不是那个领域的专家,所以我不能确定).

尝试这样做:

google.maps.event.clearListeners(piemontePolygon, 'mouseover');
Run Code Online (Sandbox Code Playgroud)


编辑:
根据文档,你可以尝试与另一个方法,如果上面的代码失败.


案例1(您也可以将事件类型作为第二个参数传递):

google.maps.event.clearInstanceListeners(piemontePolygon);
Run Code Online (Sandbox Code Playgroud)


案例2:

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

google.maps.event.removeListener(listener1);
Run Code Online (Sandbox Code Playgroud)

  • +1 案例 2 是要走的路,是了解正在发生的事情的最明确的方式。 (2认同)