谷歌地图可编辑多边形过滤器 从set_at事件中拖动事件

Google Map Editable Polygon Filter Drag event from set_at events

本文关键字:事件 at 拖动 set 编辑 多边形 过滤器 谷歌地图      更新时间:2023-09-26

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

删除dragstart上的set_at侦听器,并在dragend上重新分配set_at侦听器

另一种选择是在 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
        });
    });