javascript - OpenLayers on Load Markers Popup -
i'm using openlayers view map , i'm having issue marker's popup. when markers loaded, i'm assigning them 2 events moouseover , mouseout when of markers triggered these events first created marker's popup shown, when mouseover other markers. i'm creating these events first marker , not of them.. ideas? thanks
var listmarkers = getmarkers(); (var = 0; < listmarkers.length; i++) { var size = new openlayers.size(21, 25); var offset = new openlayers.pixel(-(size.w / 2), -size.h); var icon; if (listmarkers[i].icon.trim() === "red") { icon = new openlayers.icon ('http://www.openlayers.org/dev/img/marker.png', size, offset); } else { icon = new openlayers.icon ('http://www.openlayers.org/dev/img/marker-' + listmarkers[i].icon.trim() + '.png', size, offset); } var mark = new openlayers.marker(new openlayers.lonlat(listmarkers[i].longitude, listmarkers[i].latitude).transform(new openlayers.projection("epsg:4326"), map.getprojectionobject()), icon); //here add mouseover event mark.events.register('mouseover', mark, function (evt) { popup = new openlayers.popup.framedcloud("popup", new openlayers.lonlat(listmarkers[i].longitude, listmarkers[i].latitude).transform(new openlayers.projection("epsg:4326"), map.getprojectionobject()), null, '<div><b>' + listmarkers[i].title + '</b><br/>' + listmarkers[i].description + '</div>', null, false); map.addpopup(popup); }); //here add mouseout event mark.events.register('mouseout', mark, function (evt) { popup.hide(); }); markers.addmarker(mark); }
in mouseover event while creating popup you're referring listmarkers[i], in javascript scope remember last value of given variable i, every popup information listmarkers[listmarkers.length-1]. fix this, add details (title, latitude, longitude) mark object (mark.data.title = listmarkers[i]), , read them in event handler evt or this object (as you're setting in register call).
Comments
Post a Comment