I have a page that retrieves a bunch of locations and some data about their associated markers and puts them on a Google Maps. When you click on each of them should appear its own small message. However, when you click on ANY of them, the last last message appears in the last marker added. What gives? Don't I script the click event correctly? Here is the relevant code:
var xmlDoc;
if (window.XMLHttpRequest)
{
xmlDoc=new window.XMLHttpRequest();
xmlDoc.open("GET","locs.php",false);
xmlDoc.send("");
xmlDoc=xmlDoc.responseXML;
}
else if (ActiveXObject("Microsoft.XMLDOM"))
{
xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
xmlDoc.async=false;
xmlDoc.load("locs.php");
}
var pins = xmlDoc.getElementsByTagName("pin");
for (i=0;i<pins.length;i++)
{
var point = new GLatLng( pins[i].getElementsByTagName("lat")[0].childNodes[0].nodeValue,
pins[i].getElementsByTagName("lon")[0].childNodes[0].nodeValue);
var colord;
var curgender = pins[i].getElementsByTagName("gender")[0].childNodes[0].nodeValue;
if(curgender == "Male")
{colord = blueOpt;}else if(curgender=="Female"){colord = pinkOpt;}else{colord = purpleOpt;}
var marker = new GMarker(point, colord);
var mess = pins[i].getElementsByTagName("message")[0].childNodes[0].nodeValue;
GEvent.addListener(marker, "click", function() {
marker.openInfoWindowHtml(mess);
});
map.addOverlay(marker);
}
}
source
share