Google Map可编辑多边形过滤器从set_at事件中拖动事件

时间:2013-10-31 18:52:15

标签: javascript google-maps events polygon drag

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

2 个答案:

答案 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
        });
    });