[OpenLayers-Users] Event "featureunhighlighted" not triggered
Olivier THIERRY
olivier.thierry at gmail.com
Thu Mar 18 07:06:23 EDT 2010
2010/3/18 Eric Lemoine <eric.lemoine at camptocamp.com>:
> On Thu, Mar 18, 2010 at 11:08 AM, Olivier THIERRY
> <olivier.thierry at gmail.com> wrote:
>> 2010/3/17 Eric Lemoine <eric.lemoine at camptocamp.com>:
>>> On Wed, Mar 17, 2010 at 5:14 PM, Olivier THIERRY
>>> <olivier.thierry at 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.lemoine at 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.lemoine at camptocamp.com
> 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
More information about the Users
mailing list