[OpenLayers-Dev] adding markers with popups as features.

Fred Arters fred at monkeytroy.com
Wed Aug 20 16:33:41 EDT 2008


I need to be able to dynamically create and add markers to my map,  
each with it's own pop up.   Had some trouble getting it to work.  I  
could create markers and remove them and I could handle an event for a  
marker but the examples really directly associated contents of a popup  
with one method that was tied to one marker.   So adding several  
markers with their own pop up details dynamically from a function was  
not as easy or as obvious as I thought.

The examples were not really helping me with what I needed.   There  
are examples to create markers and examples to manually create markers  
with popups but with hard-coded content in the pop ups.   Some of the  
examples I found based on xml files didn't really apply either, though  
in the future they may.

I came up with this and it works.. so here it is for anyone else  
needing the same kind of thing.

function addMarker(pLon, pLat, pPopUpText) {

       // setup the icon
        var size = new OpenLayers.Size(15, 22);
        var offset = new OpenLayers.Pixel(-(size.w / 2), -size.h);
        var theIcon = theIcon = new OpenLayers.Icon('img/marker.png',  
size, offset);

       // set the popup size..  static for now.
        var theSize = new OpenLayers.Size(350, 200);

        // create a feature.
        var feature = new OpenLayers.Feature( featureLayer, new  
OpenLayers.LonLat(pLon, pLat),
            {icon: theIcon, popupSize: theSize, popupContentHTML:  
pPopUpText});

        // create the marker and popup
        feature.createMarker();
        feature.createPopup(true);

        // hide the popup to start.
        feature.popup.hide();

        // add the popup and marker to the map.
        theMap.addPopup(feature.popup);
        markerLayer.addMarker(feature.marker);

        // toggle the popup.
        feature.marker.events.register("mousedown", feature, function  
(evt) {
            feature.popup.toggle();
            OpenLayers.Event.stop(evt);
        });
  }

When you want to remove a marker you have to remove the marker from  
the marker layer, destroy the pop up and then the feature.

Thoughts on this?

Works really well for me but is there a more appropriate way to use  
the Feature for creating markers and associated popups?   Looks like  
Vector will become the way to do it in the future but right now the  
createMarker and createPopup methods for vector are just stubbed out  
functions that return null.

-Fred

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.osgeo.org/pipermail/openlayers-dev/attachments/20080820/c585a786/attachment.html


More information about the Dev mailing list