On Thu, Mar 18, 2010 at 11:08 AM, Olivier THIERRY <olivier.thie...@gmail.com> wrote: > 2010/3/17 Eric Lemoine <eric.lemo...@camptocamp.com>: >> On Wed, Mar 17, 2010 at 5:14 PM, Olivier THIERRY >> <olivier.thie...@gmail.com> 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 : eric.lemo...@camptocamp.com >> 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 : eric.lemo...@camptocamp.com http://www.camptocamp.com _______________________________________________ Users mailing list Users@openlayers.org http://openlayers.org/mailman/listinfo/users