2014-01-15 1171 views
0

我被困在告诉编辑事件我编辑了多边形的哪条路径。我需要知道这一点,因为我将多边形的坐标发布到服务器,并且需要能够告诉它我更改了多边形的哪条路径。最初,我的多边形都是单路径多边形,我必须传递给我的editPolygon()方法的是编辑顶点的索引(它自动作为第一个参数传递)。但是,我现在还需要传递我正在编辑的多边形路径的索引。因为我的多边形可以有多条路径,所以我需要能够说“编辑路径1并更新该部分”。编辑多边形多边形的多边形路径事件

下面的代码是我尝试添加pathIndex作为参数,但它的值不带入匿名函数。同样,该函数的第二个参数自动设置为编辑顶点的LatLng对象。我可以看到我需要访问函数中的多边形路径,但范围不允许。

var pathIndex = polygon.getPaths().getAt(thisIndex); 
     google.maps.event.addListener(polygon.getPath(), 'set_at', function(editIndex) { 
      editPolygon(editIndex, pathIndex); 
     }); 

有关如何判断您正在编辑多路径面的哪条路径的任何想法?如果有功能可以告诉你改变了路径中的哪个顶点,那么不应该有办法告诉你多边形中哪条路径改变了吗?

回答

0

这是一个可能的解决方案,但它可能不是最优雅的。

当我在多边形中创建每个路径时,我为该多边形内的索引设置了一个属性。例如:

polygonPath.pathIndex = indexOfPathInPolygon; 

它现在是MVCArray的一部分。

现在我只需要建立正常的事件处理程序:

google.maps.event.addListener(polygonPath, 'set_at', editPolygon); 

当editPolygon()被调用时,我可以因为“这个”引用MVCArray,因此我编辑访问指数:

function editPolygon(editIndex) { 
    var editedPath = myPolygon.getPaths.getAt(this.pathIndex); 

}