我有一个可编辑的多边形,我想在拖动顶点(多边形大小调整)时监听事件。通常将路径附加到'set_at'事件是好的,但是当拖动整个多边形时它会触发很多事件。
google.maps.event.addListener(polygon, 'dragend', function(){search();});
google.maps.event.addListener(polygon.getPath(), 'insert_at', function(e, e1){search();});
google.maps.event.addListener(polygon.getPath(), 'remove_at', function(e, e1){search();});
//this also fires a lot of events when ploygon is dragged
google.maps.event.addListener(polygon.getPath(), 'set_at', function(){search();});
我想要实现的是一个类似“shape_changed”的事件,它不会在拖动事件时触发事件。
答案 0 :(得分:4)
移除set_at
上的dragstart
- 监听器,并在set_at
上重新分配dragend
- 监听器
答案 1 :(得分:0)
另一种选择是在dragstart和dragend上设置一个标志,让你的set_at监听器在做任何事情之前查看那个标志:
polygon.addListener('dragstart', function (event) {
dragging = true;
});
polygon.addListener('dragend', function (event) {
//do drag end stuff here
dragging = false;
});
//setup resize handler
var paths = polygon.getPaths();
paths.forEach(function (path) {
path.addListener('set_at', function (event) {
if (!dragging) //ignore this event while dragging
//do resize stuff here
});
});