Google Map API v3“ dragend”事件的触发次数超过了

use*_*038 4 google-maps-api-3

目前,我的Google地图(api v3)上有以下监听器事件:

google.maps.event.addListener(Map, 'center_changed', FixedMarkerInCenter);
google.maps.event.addListener(Map, 'zoom_changed', FixedMarkerInCenterZoom);
google.maps.event.addListener(Map, 'dragend', FindReverseGeocode });
Run Code Online (Sandbox Code Playgroud)

问题在于,“ dragend”事件触发了多次(至少四次),并且“ FindReverseGeocode”函数发生了多次。有人知道这个问题吗?

dso*_*nus 5

没错,这很烦人,但是..还不要感到绝望-您可以使用简单的JavaScript进行修复:

map.dragInProgress = false; //adding flag to already existing map object to keep DOM clean
google.maps.event.addListener(map, 'dragend', function() {
  if(map.dragInProgress == false) { //only first shall pass
    map.dragInProgress = true;
    window.setTimeout(function() {
        console.log('Note how you will see this console message only once.');
        //cast your logic here
        map.dragInProgress = false; //reset the flag for next drag
    }, 1000);
  }
});
Run Code Online (Sandbox Code Playgroud)

简而言之,这使您每秒仅接收一次dragend事件。确保您的脚本不会在逻辑中间死掉,否则首先是最后的拖动。您可以使用try / catch / finally来解决该问题。请享用!