我被告知编辑事件我编辑的多边形路径。我需要知道这一点,因为我将多边形的坐标发布到服务器,并且需要能够告诉它我更改了多边形的哪条路径。
最初,我的多边形都是单路径多边形,我必须传递给我的editPolygon()方法的是编辑顶点的索引(它自动作为第一个参数传递)。但是,我现在还需要传递我正在编辑的多边形路径索引。因为我的多边形可以有多个路径,所以我需要能够说“编辑路径1并更新该部分”。
以下代码是我尝试将pathIndex添加为参数,但其值不会带入匿名函数。此外,函数的第二个参数也会自动设置为已编辑顶点的LatLng对象。我可以看到我需要访问函数中的多边形路径,但范围不允许它。
var pathIndex = polygon.getPaths().getAt(thisIndex);
google.maps.event.addListener(polygon.getPath(), 'set_at', function(editIndex) {
editPolygon(editIndex, pathIndex);
});
关于如何判断您正在编辑的多路径多边形路径的任何想法?如果有功能告诉您更改路径中的哪个顶点,那么是否应该有办法告诉您多边形中的哪个路径也发生了变化?
答案 0 :(得分:0)
这是一种可能的解决方案,但它可能不是最优雅的。
当我在多边形中创建每个路径时,我为该多边形内的索引设置了一个属性。例如:
polygonPath.pathIndex = indexOfPathInPolygon;
它现在是MVCArray的一部分。
现在我只需要正常设置事件处理程序:
google.maps.event.addListener(polygonPath, 'set_at', editPolygon);
当调用editPolygon()时,我可以访问该索引,因为'this'引用了我编辑的MVCArray:
function editPolygon(editIndex) {
var editedPath = myPolygon.getPaths.getAt(this.pathIndex);
}