[OpenLayers-Users] unselect did not work

Arnd Wippermann arnd.wippermann at web.de
Tue Apr 27 13:52:54 EDT 2010


Hi Sarah,
 
the example shows how to retrieve features from a wms layer. But you have a
vector layer (wfs layer). So you can link the SelectFeatureControl to that
layer. 
 
ctrlSelectFeatureOptions = { clickout: true, toggle: true, multiple: false,
hover: false, toggleKey: "ctrlKey", multipleKey: "none", box: false };
ctrlSelectFeature = new OpenLayers.Control.SelectFeature(layerWFS,
ctrlSelectFeatureOptions);
 
//optional
ctrlSelectFeature.onSelect    = function (ft) {  };
ctrlSelectFeature.onUnselect  = function (ft) {  };
 
ctrlSelectFeature.activate();

If you now click on a feature from your wfs it will be selected. If you do
not add a own styleMap to your wfs layer, the default styleMap is used to
display the features for the different modes (unselected, selected or
temporarily).
 
If you want use your own styleMap, you have to declare the styles for the
different modes (at last 'default' for unselected features and 'select' for
selected features) to see that you have select a feature.
 
Arnd
 
 
  _____  

Von: Sarah Schuessler [mailto:sarah_flip at yahoo.de] 
Gesendet: Dienstag, 27. April 2010 09:57
An: Arnd Wippermann
Cc: users at openlayers.org
Betreff: AW: [OpenLayers-Users] unselect did not work


Hi Arnd,

thanks for your answer!
Please read below.


  _____  




Hi,
 
i'm not sure, why you need a layer for your selected feature. Why not use
the selectFeatureControl on the wfs layer.
I use my Control.SelectFeature with my wfs layer(wfs2)- or don`t I use the
event right? (event.register instead of events.on). I get along with this
example:
http://dev.openlayers.org/releases/OpenLayers-2.9/examples/getfeature-wfs.ht
ml to get back a visual selecting for the user and get back some information
about the selected feature.


About your question. 
 
The problem is the feature object. You add not a new feature to a new layer.
Instead it seems, that you move the selected feature from the wfs layer  to
the new layer. That means wfs.event.on("unselected") cann't work, because
your selectFeatureControl works only for the wfs layer.
Yes I thought something like that, but could not manage to solve this.
Thanks for your example! 

Use a clone of the feature and remove the only feature on your select layer.
 
    layerWFS.events.on({'featureselected': function(feature){
                        selectLayer.addFeatures([feature.feature.clone()]);
                        //selectLayer.addFeatures([feature.feature]);
                        alert(this.selectedFeatures.length);
                    },
                    'featureunselected': function(feature){
 
selectLayer.removeFeatures([selectLayer.features[0]]);
                        //selectLayer.removeFeatures([feature.feature]);
                        alert(this.selectedFeatures.length + " -
unselected");
                    },
                });

 
A bit confusing is also the style you add as default style to the select
layer. It looks like you select a feature on the wfs layer, but it's really
the not selected feature on the select layer.
So I have to register a select style to my wfs layer and cancel select
layer, am I right? 

best regards
Sarah

Arnd

  _____  

Von: users-bounces at openlayers.org [mailto:users-bounces at openlayers.org] Im
Auftrag von Sarah Schuessler
Gesendet: Montag, 26. April 2010 10:28
An: users at openlayers.org
Betreff: [OpenLayers-Users] unselect did not work


Hi list,

I try to use Control.SelectFeature but I can`t unselect (selection layer
does not get removed). Here is my code:
var selectFeature = new OpenLayers.Control.SelectFeature(wfs2, {clickout:
true, multiple: false, hover: false, toggle:false, toggleKey: "shiftKey",
box: true, multipleKey: "ctrlKey"});

var wfs2 = new OpenLayers.Layer.Vector("WFS_Waldschutz", 
                { styleMap: styleMap,
                 strategies: [new OpenLayers.Strategy.Fixed()],
                 protocol: new OpenLayers.Protocol.WFS({ 
                   url: "http://myserver:81/geoserver/wfs?service=wfs", 
                    featureNS: "http://mycomp.org", 
                    featureType: "mylayer", 
                    geometryName: "SHAPE", 
                    srsName: "EPSG:4326",
                    version: "1.1.0" 
                  
                    }),
                   projection: new OpenLayers.Projection("EPSG:4326")
                });    

wfs2.events.on({'featureselected': function(feature){ 
                            select.addFeatures([feature.feature]); 
                            alert(this.selectedFeatures.length); 
                        }, 
                        'featureunselected': function(feature){
                            select.removeFeatures([feature.feature]);
                            alert(this.selectedFeatures.length);
alert("unselected");
                        },
                    });  

var select = new OpenLayers.Layer.Vector("Selection", { 
            styleMap: new
OpenLayers.Style(OpenLayers.Feature.Vector.style["select"]), 
            displayInLayerSwitcher: true, visibility: true});

featureselected works (at firebug I can see that my app does not get to this
break point). What`s wrong?

Thank you for any hints.
best regards
Sarah




-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.osgeo.org/pipermail/openlayers-users/attachments/20100427/79e9fda1/attachment.html


More information about the Users mailing list