Google Maps Polygon编辑 - 在mouseup上获得latlng位置

时间:2012-07-25 16:36:30

标签: google-maps-api-3

我正在尝试编写一个简单的捕捉功能,用于在Google Maps v3.9中编辑多边形

我在地图上有几个多边形,可以一次编辑一个。 当一个可编辑时,我还添加一个监听器,以便在拖动顶点时触发。

由于google.maps.Polygon没有拖动事件,我添加了一个mousedown侦听器,用于检查顶点是否在光标下方,如果是,则添加mouseup侦听器。 此mouseup侦听器中的代码会检查所有其他多边形的顶点,并在找到紧密匹配时更新拖动顶点。

除了一个问题外,这很有效。使用latLng侦听器返回的PolyMouseEvent的{​​{1}}属性执行检查。此属性指向顶点被拖动之前的位置,我找不到在新位置引用顶点的方法。

mouseup

1 个答案:

答案 0 :(得分:4)

多边形是路径的集合,路径是MVCArraysLatLng个对象,因此我们可以在多边形的每个路径上侦听set_at事件,告诉我们何时有一个点已被感动。

poly1.getPaths().forEach(function(path, index){
  google.maps.event.addListener(path, 'set_at', function(index, oldLatLng){
    var newLatLng = path.getAt(index);
    // Now you have both the old and new position
  });
});

如果您知道您的多边形永远不会有多条路径(内环),那么您可以这样做:

google.maps.event.addListener(poly1.getPath(), 'set_at', function(index, oldLatLng){
  var newLatLng = path.getAt(index);
});

虽然我推荐第一个,因为你永远不知道多个路径的多边形何时会以某种方式潜入。