Where you do:
var pid = feature.pid

You want to do:
var pid = feature.attributes.pid




Puneet Kishor wrote:
> 
> Ok, I actually was able to figure out how to use a vector layer to 
> create markers (points). It was a lot easier that what I was making it 
> out to be, once I figured out what to do. My problem now lies with 
> passing a value to the popup creator so I can display point-specific 
> info. My code looks like so (cribbed from the vector layer examples web 
> page) --
> 
>      var vectorLayer = new OpenLayers.Layer.Vector("Vector Layer", 
> {"style": layer_style});
> 
>      selectControl = new OpenLayers.Control.SelectFeature(
>        vectorLayer,
>        {"onSelect": onFeatureSelect, "onUnselect": onFeatureUnselect}
>      );
>      map.addControl(selectControl);
>      selectControl.activate();
> 
>      var features = [];
>      for (var i = 0; i < points.length; i++) {
>        var point = new OpenLayers.Geometry.Point(points[i].lo, 
> points[i].la).transform(
>          new OpenLayers.Projection("EPSG:4326"),
>          map.getProjectionObject()
>        );
>        var pointFeature = new OpenLayers.Feature.Vector(point, {"pid": 
> i}, style_blue);
>        features.push(pointFeature);
>      }
> 
>      vectorLayer.addFeatures(features);
>      map.addLayer(vectorLayer);
>    },
> 
>    "onPopupClose": function(evt) {
>      selectControl.unselect(selectedFeature);
>    },
> 
>    "onFeatureSelect": function(feature) {
>      selectedFeature = feature;
> 
>      var pid = feature.pid; // this was set in the loop above
>      var str = getInfoOnFeature(pid); // this is where I retrieve info
> 
>      var popup = new OpenLayers.Popup.FramedCloud(
>        "chicken",
>        feature.geometry.getBounds().getCenterLonLat(),
>        null,
>        "<div style='font-size:.8em'>" +
>          "Point ID: " + feature.pid + "<br />" +
>          "<br />Info: " + str +
>          "</div>",
>        null,
>        true,
>        onPopupClose
>      );
> 
>      feature.popup = popup;
>      map.addPopup(popup);
>    }
> 
> As shown above, when a feature is selected, I would like to be able to 
> access its "pid" and use it to retrieve information about that feature 
> that I can then display in the popup. The OpenLayers.Feature docs say 
> that I can specify arbitrary, serializable attributes in the 
> constructor. For now, I get "undefined" for feature.pid. What am I doing 
> wrong, and how do I correct
> this?sts.osgeo.org/mailman/listinfo/openlayers-users
> 

-- 
View this message in context: 
http://osgeo-org.1803224.n2.nabble.com/passing-feature-attributes-to-popups-onSelect-tp5990870p5991197.html
Sent from the OpenLayers Users mailing list archive at Nabble.com.
_______________________________________________
Users mailing list
[email protected]
http://lists.osgeo.org/mailman/listinfo/openlayers-users

Reply via email to