[OpenLayers-Users] [ OpenLayers-Users ] Click on OpenLayers.Feature.Vector

Christoph Lingg christoph at lingg.eu
Thu Feb 25 13:00:22 EST 2010


Hi Andreas,

thank you for your help!

I have alreade tried to use the SelectFeature class. But a strange behaviour appears when combing it with the DragFeature: i can click the feature only once. If i don't use the DragFeature the SelectFeature works like expected. I created a working example of that phenomena, see at the bottom. If you disable the dragFeature the selectFeature works like expected, maybe this is even a bug...?

Cheers,
Christoph

layer = new OpenLayers.Layer.Vector("layer");
map.addLayers([layer]);

drag = new OpenLayers.Control.DragFeature(layer);
map.addControl(drag);
drag.activate();

click = new OpenLayers.Control.SelectFeature(
    [layer],
    {
        clickout: true, toggle: false,
        multiple: false, hover: false,
        toggleKey: "ctrlKey", // ctrl key removes from selection
        multipleKey: "shiftKey" // shift key adds to selection
    }
);
map.addControl(click);
layer.events.on({
                "featureselected": function(e) {
                    alert('selected');
                },
                "featureunselected": function(e) {
                     alert('unselected');
                }
            });
click.activate();

ftr = new OpenLayers.Feature.Vector(new OpenLayers.Geometry.Point(1, 2)); // an icon
layer.addFeatures([ftr]);


----- Original Message -----
From: ahocevar at opengeo.org
To: christoph at lingg.eu
Date: 25.02.2010 14:36:48
Subject: Re: [OpenLayers-Users] Click on OpenLayers.Feature.Vector


> Hi,
>
> you need to create an OpenLayers.Control.SelectFeature instance,
> configure it with your vector layer, and add it to the map. You can then
> listen for the layer's "featureselected" event.
>
> See the [1] example if you need a code snippet. The example does exactly
> the same, but on two different layers instead of just one.
>
> Regards,
> Andreas.
>
> [1] http://openlayers.org/dev/examples/select-feature-multilayer.html
>
> Christoph Lingg wrote:
> > Hello!
> >
> > I changed from GoogleMap to OpenLayers, and although I enjoy to use the opensource equivalent, sometimes I feel lost in the OL documentation ;-)
> >
> > Would anyone be so kind and could give me hint how to achieve this very low level problem: I have a Vector Layer (I can't use marker class as I use the dragging feature as well) to which I add some Feature Vector, that are displayed on the map. What I need now is triggering an event when a feature was clicked. Very basically my code looks like this:
> >> layer = new OpenLayers.Layer.Vector("layer");
> >> map.addLayers([layer]);
> >> ftr = new OpenLayers.Feature.Vector(new OpenLayers.Geometry.Point(lon, lat), null, styleMarker); // an icon
> >> layer.addFeatures([ftr]);
> > I tried different approaches that never worked out! What is the right way to go?
> >
> > Thank you in advance for any help!
> >
> > Christoph
> >
> >
> >
> > _______________________________________________
> > Users mailing list
> > Users at openlayers.org
> > http://openlayers.org/mailman/listinfo/users
>
>
> --
> Andreas Hocevar
> OpenGeo - http://opengeo.org/
> Expert service straight from the developers.
>






More information about the Users mailing list