【发布时间】:2015-06-11 21:08:31
【问题描述】:
现在我的代码如下所示:
// create a LatLng array out of given coordinates string
for (var i = 0; i < coordinateString.length; i++) {
var polygonCoords = new Array();
var j = 0;
var z = j + 1;
while (z < coordinate.length)
{
if ((j%2) === 0)
{
var coord1 = parseFloat(coord[z]);
var coord2 = parseFloat(coord[j]);
var newLatLng = new google.maps.LatLng(coord1,coord2);
polygonCoords.push(newLatLng);
} else
{
var coord1 = parseFloat(coord[j]);
var coord2 = parseFloat(coord[z]);
var newLatLng = new google.maps.LatLng(coord1,coord2);
polygonCoords.push(newLatLng);
}
z++;
j++;
}
/** Adds the polygon to a polygon array
* and maps it onto the map
*/
var newPoly = new google.maps.Polygon(
{
paths: polygonCoords,
strokeColor: objArray[i].borderColor,
strokeOpacity: 0.8,
strokeWeight: 2,
fillColor: objArray[i].fillColor,
fillOpacity: 0.35
})
newPoly.setMap(map);
newPoly.set("eventNum",objArray[i].eventID)
newPoly.set("offTime", objArray[i].offTime)
function attachInfoWindow(event)
{
var infowindowPoly = new google.maps.InfoWindow();
var eventNo = newPoly.get("eventNum");
var outTime = newPoly.get("offTime");
var resTime = objArray[i].restoreTime;
var contentString = "Event Number: " + eventNo + "<br> Outage Time: " + outTime + "<br> Estimated Restoration Time: " + resTime;
infowindowPoly.setContent(contentString);
infowindowPoly.setPosition(event.latLng);
infowindowPoly.open(map);
google.maps.event.addListener(map, 'click', function()
{
infowindowPoly.close();
});
}
google.maps.event.addListener(newPoly, 'click', attachInfoWindow);
}
}
它会在不同的位置创建一个多边形数组(它是循环的,因此每次创建一个新的多边形并将其设置到地图时),单击时会弹出一个信息窗口并显示一些内容,但它是相同的内容。但是我想为每个多边形显示不同的信息窗口。我已经阅读了所有其他类似的问题和答案,并修改了我的代码。
请注意,我已将保存我想要的内容的对象存储到一个数组中,并使用索引和其他方式来获取对象的属性,然后将其显示为我的信息窗口内容。
【问题讨论】:
-
似乎只创建一个多边形,数组在哪里?
-
抱歉,它是一个循环,所以每次迭代都会创建一个新多边形
-
但是你没有在数组中插入多边形,看起来你重用了标记和 infoWindow
-
请提供一个Minimal, Complete, Tested and Readable example 来证明这个问题。
标签: javascript arrays google-maps google-maps-api-3 polygons