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