我假设polygonsArray
是你的多边形的阵列,所以你的循环应该是这样的......
for (var u=0; u < polygonsArray.length; u++) {
var polygonOptions = {
fillColor: 'blue',
strokeWeight: 1,
name: "Any Name"
};
// 1\ Creat polygon
var polygon = new google.maps.Polygon(polygonOptions);
// 2\ Set polygon path
var pathArr = polygonsArray['path'];
polygon.setPaths(pathArr);
//xxxxxxxxxxxxxxxxxxxxx MAGIC HERE xxxxxxxxxxxxxxxxxxxxxxxxxx
// 2.5\ Give polygon index as a path object new attribute
var path = polygon.getPath();
path["parentIndex"] = u;
//xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
// 3\ Add polygon to map
polygon.setMap(map);
// 4\ Add events to polygon
//Listen to any modification occures to the path
google.maps.event.addListener(polygon.getPath(), 'set_at', function() {
console.log(this["parentIndex"]);
});
//Listen to new point inserted to the path
google.maps.event.addListener(polygon.getPath(), 'insert_at', function() {
console.log(this["parentIndex"]);
});
}//End of loop
对于JavaScript,你可以当你创建一个新的多边形对象创建'indexID' ,在你的事件监听器中,你可以得到每个多边形的'indexID',Javascript回答:http://stackoverflow.com/a/15209277/4195406 – ztan
我通过将所有节点事件包装在多边形事件中解决了这个问题。 我已经在每个多边形上有一个索引属性,但不能访问节点事件上的多边形属性。方法是将polygon.getPath()包含在绑定到循环中当前多边形的onClick事件上。如您所见,绑定到.getPath()方法的事件会导致事件的范围doesent具有多边形及其属性。 –