5

我有一个可编辑的多边形,我想在拖动顶点时收听事件(多边形调整大小)。通常将路径附加到“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”的事件,它在拖动时不会触发事件。

4

2 回答 2

6

删除set_at-listener ondragstart并重新分配set_at-listener ondragend

于 2013-10-31T23:00:03.807 回答
1

另一种选择是在 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
        });
    });
于 2018-01-31T20:03:43.787 回答