我怎么能得到多边形对象在谷歌地图,当路径改变



我使用API v3在Google Maps上动态创建了很多多边形。我没有它们的全局数组。我在创建后为每个对象分配事件,因为我需要跟踪用户对它们所做的更改。一切都很好,除了一件事。

path = polygon.getPath(); //Note, that polygon isn't a global variable
//DragEnd
google.maps.event.addListener(polygon, "dragend", function(){
    SavePolygonToDb(this);
});
//Edited
google.maps.event.addListener(path, "set_at", function() {
    //Now 'this' is the path array, not the polygon 
    SavePolygonToDb(????);
});

不知何故,我需要得到多边形对象,路径所属,但我找不到方法。我想到的唯一解决办法是,我需要将所有多边形和它们的路径存储在一个数组中,然后如果有什么变化,我就循环遍历数组并将路径值与实际值进行比较。如果某个LatLng坐标不同,则多边形改变。将新值保存到后端数组,然后继续。但我认为,一定有其他(更简单的)解决方案。

与此同时,我想出了一个简单的解决方案。为多边形定义一个全局数组:

var polygonArray = [];

创建多边形时,将它们推入数组:

polygonArray.push(polygon);

并添加一个事件监听器,如下所示:

google.maps.event.addListener(path, "set_at", function(){
    for (i in polygonArray) {
        if (polygonArray[i].getPath() == this) {
            alert('Got it'); //polygonArray[i]
        }
    }
});

最新更新