首页 > 解决方案 > zoom_changed 在页面加载时重复触发

问题描述

使用 Google Maps API,我的initMap()函数中有两个监听器:

google.maps.event.addListener(map, 'dragend', function(e) {
    var searchType=location.search.split('=').pop();                
    MAPSEARCH.MY.searchOnLoc(false, searchType);
});

google.maps.event.addListener(map, 'zoom_changed', function(e) {
    var searchType=location.search.split('=').pop();
    MAPSEARCH.MY.searchOnLoc(false, searchType);
});

第一个工作正常,但第二个(zoom_changed)在页面加载时触发多次,导致各种混乱。我怎样才能防止这种情况?

出于测试目的,我尝试更改为,bounds_changed但它也会在页面加载时触发额外的时间。

标签: google-mapsgoogle-api

解决方案


我找到了一种方法来阻止zoom_changed监听器加载,直到地图完成加载:

google.maps.event.addListenerOnce(map, 'tilesloaded', function() {
    google.maps.event.addListener(map, 'zoom_changed', function (e) {
        // var eventListener = google.maps.event.addListener(this.map, "bounds_changed", function () {
        var searchType = location.search.split('=').pop();
        MAPSEARCH.MY.searchOnLoc(false, searchType);
        // });
    });
})

推荐阅读