2

下面是我添加到地图的 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);
4

2 回答 2

2

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

e609 = new google.maps.Polygon({
    description: "Polygon named e609",
    shortTitle: "e609",
    paths: e609_c,
    strokeOpacity: 0,
    fillColor: "#B1509E",
    fillOpacity: .8
});

添加点击侦听器时,您需要通过其变量名称(e609)来引用它,或者我会做一个多边形数组,比如var myPolygons = []pushe609 放入这个数组中。然后您可以将其寻址为myPolygons[0]. 或者,您可以使用对象通过短标题来保存多边形,例如myPolygons['e609'].

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

google.maps.event.addListener(e609, 'click', function(event) {
  alert("Clicked on " + this.description + " short title " + this.shortTitle);
});
于 2012-06-06T17:19:04.460 回答
0

我这样做的方式是使用TAFFY.JS

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

var returnObj = new google.maps.Polygon({
             paths: [arcPts],
             strokeColor: beamColor,
             strokeOpacity: 0.5,
             strokeWeight: 3,
             fillColor: fillColor,
             fillOpacity: 0.1,
             map: map,
             indexID: i
    });

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

google.maps.event.addListener(returnObj, 'rightclick', function (event) {
  // add to make visible db
  toggle.insert({
    "indexID":i,
    "obj":returnObj
  });
}); 

现在,我可以通过 ID 引用地图对象并对其进行处理

var ret=toggle({"indexID":5}).get();    
ret[0].obj.setVisible(true);
于 2019-08-21T16:47:58.730 回答