Hi,Yves G:
Thanks for your help, now the content of popup is displayed normally,and a
new problem is appeared, I just add extra infomation in coodCollection
array, depend this infomation, the marker could change the icon accordingly,
and now I get all the icon name as this: "img/mini_circle.png",  the color
parameter is right.
//*******************************************

        markers = new OpenLayers.Layer.Markers("Markers2");
                map.addLayer(markers);

                var size = new OpenLayers.Size(21, 25);
                var offset = new OpenLayers.Pixel(-(size.w / 2), -size.h);

                //
                for ( var i = 0; i < (coodCollection1.length / 3); i++) {

                        var lon = coodCollection1[i * 3];
                        var lat = coodCollection1[i * 3 + 1];
                        var color = coodCollection1[i * 3 + 2];

                        var size = new OpenLayers.Size(21, 25);
                        var offset = new OpenLayers.Pixel(-(size.w / 2), 
-size.h);
                        var iconName;
                        // color:0 red,1 blue,2 gold,3 green
                
                        alert("color is "+color);
                        switch (color) {
                        case 0:
                                iconName = 'img/marker.png';
                                break;
                        case 1:
                                iconName = 'img/marker-blue.png';
                                break;
                        case 2:
                                iconName = 'img/marker-gold.png';
                                break;
                        case 3:
                                iconName = 'img/marker-green.png';
                                break;
                        default:
                                iconName = 'img/mini_circle.png';
                        }

                        var icon = new OpenLayers.Icon(iconName, size, offset);

                        marker = new OpenLayers.Marker(new 
OpenLayers.LonLat(lon, lat),
                                        icon.clone());
                        alert("1color is "+color);
                        marker.events.register("mouseover", marker, 
popupHandler(marker,
                                        coodCollection1, i));//
                        marker.events.register('mouseout', marker, 
function(evt) {
                                popup.hide();
                        });

                        markers.addMarker(marker);
//********************************************
It looks should be the closures issue too, andI try several function factory
way, it's not work.
one of my code is as below:
//---------------------------------
function makeName(coodCollection,x) {
  return function() {
 
                        switch (coodCollection[x * 3 + 2]) {
                        case 0:
                                iconName = 'img/marker.png';
                                break;
                        case 1:
                                iconName = 'img/marker-blue.png';
                                break;
                        case 2:
                                iconName = 'img/marker-gold.png';
                                break;
                        case 3:
                                iconName = 'img/marker-green.png';
                                break;
                        default:
                                iconName = 'img/mini_circle.png';
                        }
 
 return iconName;
  }; 
} 

var iconName = makeName(coodCollection,i);
//---------------------------------

but it returned the text file of the function, how about your idea?





--
View this message in context: 
http://osgeo-org.1560.n6.nabble.com/why-the-popups-have-same-content-tp5037498p5037735.html
Sent from the OpenLayers Users mailing list archive at Nabble.com.
_______________________________________________
Users mailing list
us...@lists.osgeo.org
http://lists.osgeo.org/mailman/listinfo/openlayers-users

Reply via email to