Actually the official way to do this:
(Note: some of the variables were not declared in these snippets: longt, lat, map)
http://dev.openlayers.org/examples/light-basic.html
//Step 1 - create the vector layer var vectorLayer = new OpenLayers.Layer.Vector("ExampleLayer",{ eventListeners:{ 'featureselected':function(evt){ var feature = evt.feature; var popup = new OpenLayers.Popup.FramedCloud("popup", OpenLayers.LonLat.fromString(feature.geometry.toShortString()), null, feature.attributes.message+"<br>"+feature.attributes.location, null, true, null ); popup.autoSize = true; popup.maxSize = new OpenLayers.Size(400,800); popup.fixedRelativePosition = true; feature.popup = popup; map.addPopup(popup); }, 'featureunselected':function(evt){ var feature = evt.feature; map.removePopup(feature.popup); feature.popup.destroy(); feature.popup = null; } } }); //Step 2 - add feature to layer var p = new OpenLayers.Geometry.Point(longt, lat); var feature = new OpenLayers.Feature.Vector( p.transform(new OpenLayers.Projection("EPSG:4326"), map.getProjectionObject()), {message:'foo', location:'bar'}, {externalGraphic: '../img/marker.png', graphicHeight: 21, graphicWidth: 16} ); vectorLayer.addFeatures(feature); //Step 3 - create the selectFeature control var selector = new OpenLayers.Control.SelectFeature(vectorLayer,{ hover:true, autoActivate:true }); //Step 4 - add the layer and control to the map map.addControl(selector); map.addLayer(vectorLayer);
Hugh pearse
source share