监听polygon变化

Polygons are made of Paths which are just MVCArrays (in this case, they're a list of LatLng objects). MVCArrays have three events: insert_atremove_at, and set_at. We can use those events to detect changes in the points of the Polygon.

There are also drag events for polygonsdragstartdrag, and dragend. It's best to listen for dragend if you want to know that a shape was just dragged.

All together, we can detect any changes to a polygon:

// Loop through all paths in the polygon and add listeners
// to them. If we just used `getPath()` then we wouldn't 
// detect all changes to shapes like donuts.
polygon.getPaths().forEach(function(path, index){

  google.maps.event.addListener(path, 'insert_at', function(){
    // New point
  });

  google.maps.event.addListener(path, 'remove_at', function(){
    // Point was removed
  });

  google.maps.event.addListener(path, 'set_at', function(){
    // Point was moved
  });

});

google.maps.event.addListener(polygon, 'dragend', function(){
  // Polygon was dragged
});

原文:http://stackoverflow.com/questions/20789385/how-can-i-detect-when-an-editable-polygon-is-modified
posted on 2016-06-21 17:11  qinyahui  阅读(266)  评论(0编辑  收藏  举报