[OpenLayers-Users] Highlighting changes in the KML layer

Adrian Popa adrian_gh.popa at romtelecom.ro
Thu Nov 5 01:52:22 EST 2009


Thanks Roald,

I will read on and give it a go. I will post my solution when it's ready 
(I estimate in about ~1month).

Regards,
Adrian

Roald de Wit wrote:
> Hi Adrian,
>
> When you refresh a layer (someone please correct me if I'm wrong 
> here), all your features (items) will be replaced with the new ones, 
> therefore you need to 'manually' keep track of your features. As you 
> suggested, you could, just before a refresh, store all features (or 
> feature.ids) in some array, then refresh and compare the new feature 
> list with the old one.
>
> The refresh is usually not synchronous, but that does not need to be a 
> problem: you can register for events ('beforefeaturesadded' for 
> example) and call your compare function with the list of new features. 
> You can then loop through them and mark the new ones as new (for 
> example by saying: feature.attributes.isNew = true). Make sure that 
> the compare function itself returns true.
>
> Have a look at what's possible with styling in OpenLayes (it's a bit 
> of a read): http://docs.openlayers.org/library/feature_styling.html
>
> So, yes, your plan sounds good!
>
> Regards, Roald
>
>
> Adrian Popa wrote:
>> Hello Roald,
>>
>> I have a question about marking items as new - I guess they are not 
>> marked out of the box, right?
>> When I do the layer refresh, I just do layer.refresh({force: true}); 
>> I'm not sure what this does internally, but perhaps I can't count on 
>> any attributes I set - to be preserved.
>>
>> Should I build the variable (hash) where I keep attributes as a 
>> different variable? Or should I keep it in a standalone object?
>>
>> Also, before I do the refresh - I suspect I need to copy the 
>> attributes of the current objects, issue a layer refresh and then 
>> (hoping the refresh is synchroneous) I should go through the new list 
>> and see if I have new items. If there are, mark them as new (and mark 
>> other items as 'old').
>>
>> Supposing that I do that - what would I need to do to change the 
>> aspect (change color/make bigger) of the "new" items?
>>
>> I'm afraid this will consume some memory and resources - but I guess 
>> I will see when it's ready...
>>
>> How does my plan sound like?
>> Regards,
>> Adrian
>>
>> Roald de Wit wrote:
>>  
>>> Hi Adrian,
>>>
>>> Adrian Popa wrote:
>>>    
>>>> Thank you for the hint. I suppose I shouldn't expect to see a 
>>>> working demo of what I need :)
>>>> Do you know if the patches presented in ticket 1259 are already 
>>>> part of openlayers (since the latest version is from january last 
>>>> year?)
>>>>       
>>> The patches in that ticket are part of OpenLayers since version 2.6, 
>>> so, yes!
>>>
>>> I'm not sure if you use styling coming from the KML file or style it 
>>> all yourself. In your case I think you need to revert to the latter 
>>> case. You will need to do some magic to find out what features are 
>>> new and apply a different style to those items. There are few 
>>> different ways of doing it. One of them might be marking it's 
>>> 'newness' in an attribute of the new feature(s) and use a rule that 
>>> checks that attribute in your style map.
>>>
>>> Regards,
>>>
>>> Roald
>>>
>>>    
>>>> Thanks,
>>>>
>>>> helmi wrote:
>>>>      
>>>>> The idea from http://trac.openlayers.org/ticket/1259
>>>>> {{{
>>>>> You could create a selectStyle that could be passed to 
>>>>> Control.SelectFeature quite easily: create a style object, read 
>>>>> the "highlight" styles, create a FidFilter rule for every feature 
>>>>> (or groups of features with the same style), use the according 
>>>>> "highlight" style as symbolizer for the rule, and add the rule to 
>>>>> the style object
>>>>> }}}
>>>>>
>>>>> helmi03.com <http://helmi03.com>
>>>>>
>>>>> On Tue, Nov 3, 2009 at 12:59 AM, Adrian Popa 
>>>>> <adrian_gh.popa at romtelecom.ro 
>>>>> <mailto:adrian_gh.popa at romtelecom.ro>> wrote:
>>>>>
>>>>>     Hello everyone,
>>>>>
>>>>>     Sorry if this has already been discussed on the list (didn't 
>>>>> really
>>>>>     check), but I would like to know if there is a solution (or at
>>>>>     least a
>>>>>     plan to implement a feature) that �"somehow" highlights
>>>>>     (visually) the
>>>>>     elements that have been loaded �through KML - in contrast to the
>>>>>     elements displayed previously.
>>>>>
>>>>>     I am working at a view that displays alarms on top of the map, 
>>>>> and if
>>>>>     there is a large number of alarms, one more alarm coming every 2
>>>>>     minutes
>>>>>     will not catch the attention of the operator...
>>>>>
>>>>>     I need a mechanism to somehow color/animate symbols loaded
>>>>>     through KML
>>>>>     which were not previously on the map. Symbols which dissapear 
>>>>> between
>>>>>     layer refreshes are not important to me. At the next refresh
>>>>>     cycle, the
>>>>>     highlighted symbols would no longer be highlighted (because they
>>>>>     already
>>>>>     exist on the map).
>>>>>
>>>>>     I have a way to load KMLs periodically, avoiding the cache, 
>>>>> but I'm
>>>>>     missing the "highlight" mechanism.
>>>>>
>>>>>     Hope I have presented my request in an understandable manner, and
>>>>>     hope
>>>>>     there is a solution. Maybe a property on the KML layer indicating
>>>>>     if an
>>>>>     item is new or not...
>>>>>
>>>>>     Regards,
>>>>>     Adrian
>>>>>
>>>>>     _______________________________________________
>>>>>     Users mailing list
>>>>>     Users at openlayers.org <mailto:Users at openlayers.org>
>>>>>     http://openlayers.org/mailman/listinfo/users
>>>>>
>>>>>
>>>>>         
>>>     
>>
>>
>>   
>
>





More information about the Users mailing list