Javascript 谷歌地图多边形是否索引/我如何引用它们的索引?

Javascript 谷歌地图多边形是否索引/我如何引用它们的索引?,javascript,google-maps,google-maps-api-3,polygon,Javascript,Google Maps,Google Maps Api 3,Polygon,下面是我添加到地图的3个多边形的示例。我打算将点击事件包括到每个事件中;但是,我想输出每个多边形的一些元素,这些元素可以引用并与其他数据(如描述、图像等)相关。输出可以是每个形状的简短标题(变量名),这里是e609、c815和c840,或者是索引号,理想情况下是每个多边形前面的注释中给出的数字 多边形是否按其进入地图的顺序给出索引号?如果是这样,我如何引用此数字以将其传递给另一个函数?或者,我如何传递简短的标题 //0 var e609; var e609_c = [ //Latlng,

下面是我添加到地图的3个多边形的示例。我打算将点击事件包括到每个事件中;但是,我想输出每个多边形的一些元素,这些元素可以引用并与其他数据(如描述、图像等)相关。输出可以是每个形状的简短标题(变量名),这里是e609、c815和c840,或者是索引号,理想情况下是每个多边形前面的注释中给出的数字

多边形是否按其进入地图的顺序给出索引号?如果是这样,我如何引用此数字以将其传递给另一个函数?或者,我如何传递简短的标题

//0
var e609;
var e609_c = [
    //Latlng, cut for space.
];
e609 = new google.maps.Polygon({
    paths: e609_c,
    strokeOpacity: 0,
    fillColor: "#B1509E",
    fillOpacity: .4
});
e609.setMap(map);

//1
var c815;
var c815_c = [
    //Latlng, cut for space.
];
c815 = new google.maps.Polygon({
    paths: c815_c,
    strokeOpacity: 0,
    fillColor: "#B1509E",
    fillOpacity: .4
});
c815.setMap(map);

//2
var c840;
var c840_c = [
    //Latlng, cut for space.
];
c840 = new google.maps.Polygon({
    paths: c840_c,
    strokeOpacity: 0,
    fillColor: "#B1509E",
    fillOpacity: .4
});
c840.setMap(map);

您可以包括自定义字段来描述对象创建中的多边形,例如,我添加了description和shortTitle。我不知道直接获取变量名的方法,所以它只是重复而已。多边形应该在内部建立索引,尽管我不确定如何访问这些信息。使用指定给新多边形的变量名,可以对其进行操作

e609 = new google.maps.Polygon({
    description: "Polygon named e609",
    shortTitle: "e609",
    paths: e609_c,
    strokeOpacity: 0,
    fillColor: "#B1509E",
    fillOpacity: .8
});
添加click listener时,您需要通过其变量名(e609)引用它,或者我要做的是,制作一个多边形数组,比如说
var myPolygons=[]
e609推入该数组。然后您可以将其命名为
myPolygons[0]
。或者,您可以使用对象通过其短标题保存多边形,例如,
myPolygons['e609']

无论如何,下面是如何使用在多边形定义中创建的字段

google.maps.event.addListener(e609, 'click', function(event) {
  alert("Clicked on " + this.description + " short title " + this.shortTitle);
});

我做这件事的方式是使用

创建多边形时,我传递了一个唯一的索引号作为名为“indexID”的自定义参数

然后我将其添加到一个名为“toggle”的TAFFY数据库中(我正在使用该函数显示/隐藏多边形)

现在,我可以通过它的ID引用map对象,并对其进行处理

var ret=toggle({"indexID":5}).get();    
ret[0].obj.setVisible(true);

啊,这太完美了。事实上,这可能比完美要好,因为如果我可以使用自定义字段将其他信息也放入其中,这将简化一切。非常感谢。
google.maps.event.addListener(returnObj, 'rightclick', function (event) {
  // add to make visible db
  toggle.insert({
    "indexID":i,
    "obj":returnObj
  });
}); 
var ret=toggle({"indexID":5}).get();    
ret[0].obj.setVisible(true);