[OpenLayers-Users] Hover control sample (share)

Amos Hayes ahayes at gcrc.carleton.ca
Wed Jan 21 09:56:37 EST 2009


We've had to implement separate select and hover functionality on top  
of select feature. If you like, have a look at this work in progress:

http://atlas.gcrc.carleton.ca/kitikmeot/

--
Amos Hayes
Geomatics and Cartographic Research Centre
Carleton University
ahayes at gcrc.carleton.ca
+1.613.520.2600x8179

On 21-Jan-09, at 8:34 AM, Alexandre Dube wrote:

> Hey Eric, Ivan,
>
>  That issue could occur if both controls would actually change the
> renderIntent of the feature ( without actually selecting the  
> feature ).
>
>  Let's assume that you can only have one feature hovered at a time (
> only one feature can be hovered by the mouse).  That said, we could  
> have
> its renderIntent copied to a this.oldRenderIntent local property, then
> on "beforefeatureunselected" restore the feature with its old
> renderIntent.  What do you think ?  Simple but that could work.
>
>  Also, can we agree on this : 2 SelectFeature controls both doing
> selection by click or both by hover are not compatible with multiple
> styling, so let's forget about this for now.
>
>  I'll definitively have to try all this soon.
>
> Alexandre
>
> Eric Lemoine wrote:
>> Hi
>>
>> A first note. The current select feature implementation should
>> accomodate this use case: two controls on the same layer, one working
>> on click and the other on hover, only one of them actually changing
>> the feature style. This is achievable by registering a
>> beforefeatureselected listener, and have this listener return false.
>> Adding beforefeatureunselected might help fully accomodate that use
>> case.
>>
>> Now if we want the two controls to do feature styling, we need the
>> stuff I mentioned previously - per-control selectedFeatures arrays  
>> and
>> events. But this is unfortunately not sufficient. Use case: two
>> controls, one working on click and the other on hover, both doing
>> feature styling but with different render intents. If we have this
>> sequence "mouse goes over feature, mouse clicks feature, mouse goes
>> out of feature", then the feature ends up being rendered with the
>> "default" render intent, while it's still selected from the click
>> control's perspective. In most cases, this isn't desirable I think.
>>
>> At this point I don't have a solution to the above issue.
>>
>> Eric
>>
>> 2009/1/20, Alexandre Dube <adube at mapgears.com>:
>>
>>> Hi Ivan, Eric,
>>>
>>>  I was actually thinking a similar idea.  The more I thought about  
>>> it,
>>> the more I thought about copying/pasting the SelectFeature  
>>> control, make
>>> some changes to the copy and name it HighlightFeature.  But Eric's  
>>> idea
>>> is much better.
>>>
>>>  Having the control itself know which feature it has selected +  
>>> having
>>> its own events could enable the possibility of having multiple
>>> SelectFeature controls for a single layer.  Having both selecting on
>>> hover and/or click won't matter except for the style and the
>>> renderIntent applied to the selected feature.  I guess the last  
>>> declared
>>> control would have the last word of determining those...
>>>
>>>  About that, what if we want 2 different colors for each ctrl ?   
>>> Having
>>> 2 selectfeature ctrls doing the same thing ( hover and click ) is  
>>> not
>>> very logic, but let's say one select on hover, the other on click,  
>>> it
>>> would be nice be able to have 2 different styles for each action.   
>>> But
>>> how could we do that ? (I guess I don't fully understand the whole
>>> renderIntent stuff yet...  Could we specify a specific  
>>> renderIntent for
>>> the selectFeature ?  Could "select" be the default value and we  
>>> could be
>>> able to set our own ?)  To do so without changing the renderIntent  
>>> of
>>> the feature is to change its style only, without selecting it.
>>>
>>>  Ivan's idea (selectOnHover:false) sounds good.  I'd like to see the
>>> code and try it.  Ivan, could you share what you've done ?  At the  
>>> same
>>> time, I'd like to try to add events to the control and its
>>> selectedFeatures array, like Eric said.
>>>
>>>  Finally, I would like to know more about what you think about all  
>>> this.
>>>
>>> Best regards,
>>>
>>> Alexandre
>>>
>>> Ivan Grcic wrote:
>>>
>>>> On Mon, Jan 19, 2009 at 10:19 PM, Eric Lemoine  
>>>> <eric.c2c at gmail.com> wrote:
>>>>
>>>>
>>>>> On Mon, Jan 19, 2009 at 3:30 PM, Alexandre Dube <adube at mapgears.com 
>>>>> >
>>>>> wrote:
>>>>>
>>>>>
>>>>>> Hi Eric,
>>>>>>
>>>>>> I took a look at the SelectFeature control.  Now I understand  
>>>>>> what you
>>>>>> meant and it makes sense.  Also, it's also making sense to have  
>>>>>> this
>>>>>> control
>>>>>> have the possibility to highlight on hover or on click.
>>>>>>
>>>>>> "beforefeaturehighlighted" and "featurehighlighted" events make  
>>>>>> sense,
>>>>>> but
>>>>>> a "featureunhighlighted" (or some other term meaning that the  
>>>>>> feature
>>>>>> was
>>>>>> highlighted and is now no more) would also be useful.
>>>>>>
>>>>>>
>>>>> Alexandre,
>>>>>
>>>>> The more I think about this highlight feature control the more I  
>>>>> think
>>>>> there's no room for both a select feature and a highlight feature
>>>>> controls.
>>>>>
>>>>>
>>>>>
>>>> Same opinion here. We already have a bunch of controls, and now  
>>>> adding
>>>> two very similar ones...
>>>>
>>>> Currently im using slightly modified SelectFeature control, i added
>>>> one more option to it: selectOnHover, thats how i quickly solved  
>>>> the
>>>> problem of only highlighting feature without selecting it.
>>>>
>>>> If selectOnHover is true, feature is selected&higlighted (select
>>>> method is called) on hover, if its false feature is only  
>>>> higlighted,
>>>> not selected.
>>>>
>>>>
>>>>
>>>>> What causes people trouble is that they can't use two select  
>>>>> feature
>>>>> controls, one in hover mode and the other in click mode. This is
>>>>> because once a feature is hovered it is selected, and cannot be
>>>>> selected again when it is clicked.
>>>>>
>>>>> Maybe we could modify the select feature control so that (1) it
>>>>> optionally uses its own selectedFeatures array, as opposed to  
>>>>> relying
>>>>> on the layer's, and (b) defines its own "beforefeatureselected",
>>>>> "featureselected" and "featureunselected" event types. In this  
>>>>> way,
>>>>> one should be able to use two select feature controls, and get
>>>>> "featureselected" events, from the first control when features are
>>>>> hovered and from the second control when features are clicked.
>>>>>
>>>>> Tell me what you think,
>>>>>
>>>>>
>>>>>
>>>>
>>>>> --
>>>>> Eric
>>>>> _______________________________________________
>>>>> Users mailing list
>>>>> Users at openlayers.org
>>>>> http://openlayers.org/mailman/listinfo/users
>>>>>
>>>>>
>>>>>
>>>>
>>>>
>>>>
>>> --
>>> Alexandre Dubé
>>> Mapgears
>>> www.mapgears.com
>>>
>>>
>>>
>
>
> -- 
> Alexandre Dubé
> Mapgears
> www.mapgears.com
>
> _______________________________________________
> Users mailing list
> Users at openlayers.org
> http://openlayers.org/mailman/listinfo/users




More information about the Users mailing list