2010/3/17 Eric Lemoine <[email protected]>:
> On Wed, Mar 17, 2010 at 5:14 PM, Olivier THIERRY
> <[email protected]> wrote:
>> Hi,
>>
>> I have a vector layer with two SelectFeature controls : one is used
>> for selection, the other is used to show a popup.
>> It works well except for one case : if I select an element in the
>> vector, then I move the mouse to this element, the
>> "featurehighlighted" event is fired, but on mouse out the
>> "featureunhighlighted" event is not fired !
>
> This is expected, although it's not clear to me whether this the
> wished behavior.
>
> 1. mouse click on the feature -> control 1 selects the feature
> 2. mouse over the feature -> control 2 highlights the feature ->
> "featurehighlighted" triggers
> 3. mouse out of feature -> control 2 detects that another control
> (control 1) had highlighted the feature before it highlighted it
> itself, so it uses that control to highlight the feature the way it
> was highlighted before it highlighted it itself ->
> "featureunhighlighted" does not trigger
>
> Do you (or others) think we should trigger "featureunhighlighted"
> after the call to theOtherControl.highlight()?
>
> See attached patch (untested).
>
> --
> Eric Lemoine
>
> Camptocamp France SAS
> Savoie Technolac, BP 352
> 73377 Le Bourget du Lac, Cedex
>
> Tel : 00 33 4 79 44 44 96
> Mail : [email protected]
> http://www.camptocamp.com
>

Thanks for your response.
I think "featureunhighlighted" event sould be triggered in my case,
but I don't know for other cases.

Anyway I found a way to workaround the problem by writing my own
control for highlighting. I started from an example found on the web.
Here it is :

OpenLayers.Control.OverRejet = OpenLayers.Class(OpenLayers.Control,
                {
                    layer: null,
                    defaultHandlerOptions: {
                    'delay': 2000,
                    'pixelTolerance': 1,
                    'stopMove': false
            },
            initialize: function(layer, options)
                        {
                        this.layer = layer;
                        this.handlerOptions = OpenLayers.Util.extend(
                                {}, this.defaultHandlerOptions);
                                OpenLayers.Control.prototype.initialize.apply(
                                        this, arguments
                                );

                        this.handlers = {
                                feature: new OpenLayers.Handler.Feature(
                                        this,
                                        this.layer,
                                        {
                                                'over': this.over,
                                                'out' : this.out
                                        },
                                        {}
                                )};
                        },

                        draw: function() {
                                return false;
                        },

                        activate: function() {
                                this.handlers.feature.activate();
                        },

                        deactivate: function() {
                                this.handlers.feature.deactivate();
                        },

                        over: function(feature) {
                                var rejet = feature.rejet;
                                if (rejet != null) {
                                        rejet.showTooltip();
                                }
                        },

                        out: function(feature) {
                                var rejet = feature.rejet;
                                if (rejet != null) {
                                        rejet.hideTooltip();
                                }
                        });     

Then I configure this control for my layer :

var highlightControl = new OpenLayers.Control.OverRejet(layer);
map.addControl(highlightControl);
highlightControl.activate();

This does what I needed so no more problem for me ;)

Regards,

Olivier
_______________________________________________
Users mailing list
[email protected]
http://openlayers.org/mailman/listinfo/users

Reply via email to