I am loading multiple markers dynamically and adding them to a Markers layer. The problem is that when I click on any marker, the same popup appears on the last added marker.
var markers = new OpenLayers.Layer.Markers("Markers");
for(var i = 0; i < listd.length; i++)
{
var lonLat = new OpenLayers.LonLat(listd[i].Longitude, listd[i].Latitude);
var title = listd[i].Title;
var iconPath = listd[i].IconPath;
var size = new OpenLayers.Size(15, 22);
var offset = new OpenLayers.Pixel(-(size.w / 2), -size.h);
var icon = new OpenLayers.Icon(iconPath, size, offset);
var marker = new OpenLayers.Marker(lonLat, icon.clone());
markers.addMarker(marker);
marker.events.register("click", marker, function(e){
popup = new OpenLayers.Popup.FramedCloud("chicken",
marker.lonlat,
new OpenLayers.Size(200, 200),
title,
null, false );
map.addPopup(popup);
});
}
map.addLayer(markers);
What am i missing ?
What about when you try this ??? Update New Gmap url with label in icon :3: http://chart.apis.google.com/chart?chst=d_map_pin_letter&chld=[label]|[Pin Color]|[label color]
http://chart.apis.google.com/chart?chst=d_map_pin_letter&chld=1|FE6256|000000
more info: https://developers.google.com/chart/
Update
var markers = new OpenLayers.Layer.Markers("Markers");
for(var i = 0; i < listd.length; i++)
{
(function(i){
var lonLat = new OpenLayers.LonLat(listd[i].Longitude, listd[i].Latitude);
var title = listd[i].Title;
var iconPath = listd[i].IconPath;
var size = new OpenLayers.Size(15, 22);
var offset = new OpenLayers.Pixel(-(size.w / 2), -size.h);
var icon = new OpenLayers.Icon(iconPath, size, offset);
var marker = new OpenLayers.Marker(lonLat, icon.clone());
markers.addMarker(marker);
marker.events.register("click", marker, function(e){
popup = new OpenLayers.Popup.FramedCloud("chicken",
marker.lonlat,
new OpenLayers.Size(200, 200),
title,
null, false );
map.addPopup(popup);
});
})(i);
}
map.addLayer(markers);