如何使用Google Maps API跟踪多边形的事件更改

Jon*_*nes 9 javascript google-maps polygon google-maps-api-3

我正在为我们正在开发的网站构建"搜索区域"功能.有点像Rightmove上的那个.

除了能够跟踪多边形的事件变化(新点的设置和改变现有点)之外,我已经掌握了所有功能.我需要能够将坐标发布到表单以供提交.

我已尝试使用Google Code文档来编辑活动.每次我尝试一下,我都会得到一条关于'set_at'不可能或我的对象没有被定义的消息.

我想我知道的那个错误是thePolygon变量而不是传递给新的google.maps.event.addListener(thePolygon, 'set_at', function() { // grab paths for infoWindow grabPaths(thePath); });

但我不知道为什么.这是一个全球变量.或者不是?

那么,问题是,如何跟踪多边形的变化以将更新的坐标传递到我的表单?

非常感谢所有帮助.

这是我目前的代码:

var mapOptions = {
  // options
};

var map = new google.maps.Map(document.getElementById('map'), mapOptions);

var drawingManager = new google.maps.drawing.DrawingManager({
  drawingMode: google.maps.drawing.OverlayType.POLYGON,
  drawingControl: false,
  polygonOptions: {
    // drawing options
  }
});

drawingManager.setMap(map);

google.maps.event.addListener(drawingManager, 'polygoncomplete', function(polygon) {
  // complete functions
});

google.maps.event.addListener(thePolygon, 'set_at', function() {
  // complete functions
});

google.maps.event.addListener(thePolygon, 'insert_at', function() {
  // complete functions
});
Run Code Online (Sandbox Code Playgroud)

Dr.*_*lle 23

这些事件是为MVCArray定义的,折线不是MVCArray.您必须观察path折线(即MVCArray)的事件.此外,您无法将侦听器添加到尚未创建的对象.多边形之前不可用polygoncomplete,因此您必须在polygoncomplete-callback中添加侦听器:

google.maps.event.addListener(drawingManager,'polygoncomplete',function(polygon) {

  // complete functions

  google.maps.event.addListener(thePath, 'set_at', function() {
    // complete functions
  });

  google.maps.event.addListener(thePath, 'insert_at', function() {
    // complete functions
  });

});
Run Code Online (Sandbox Code Playgroud)

  • 使用`polygon.getPath()`而不是`thePath` (5认同)
  • 这对于具有多个路径的多边形不起作用.请参见http://stackoverflow.com/questions/20789385/how-can-i-detect-when-an-editable-polygon-is-modified (2认同)