2010/3/18 Eric Lemoine <[email protected]>: > On Thu, Mar 18, 2010 at 11:08 AM, Olivier THIERRY > <[email protected]> wrote: >> 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 ;) > > You didn't bother testing my patch, did you? > > Cheers, > > > > -- > 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 >
No, sorry, I was in a hurry and had no time to test it. Once I found a solution to workaround the problem, it was OK for me. But I will test it later ;) Regards, Olivier _______________________________________________ Users mailing list [email protected] http://openlayers.org/mailman/listinfo/users
