[OpenLayers-Dev] transition sandbox - request for comment
Paul Spencer
pspencer at dmsolutions.ca
Tue Jan 15 12:16:40 EST 2008
Thanks Pierre, I will definitely try to use this rather than my home-
grown tweening stuff.
Cheers
Paul
On 15-Jan-08, at 8:41 AM, Pierre GIRAUD wrote:
> Hi Paul,
>
> I would like to get you informed that I started working on a global
> "transition effect manager" for the google-like popups purpose
> (specifically for the popup resize and the animated panning). It's
> available as a new Tween class and Easing (.Linear, .Exponential,
> etc...) classes.
>
> I think this is generic enough to be used in other contexts and as I
> was writing this down, I thought that it could be helpful for your
> transition sandbox code as it would let you simplify much of it
> (startTransition() for example).
>
> You can find :
> - a working example in
> http://dev.openlayers.org/sandbox/camptocamp/panto/examples/tween.html
> - tween and easing classes in
> http://svn.openlayers.org/sandbox/camptocamp/panto/lib/OpenLayers/Tween.js
> ,
> - example usage in :
> http://svn.openlayers.org/sandbox/camptocamp/panto/lib/OpenLayers/Map.js
> (new panTo method).
>
> Don't hesitate to ask if you need more details.
>
> Regards,
> Pierre
>
> On Jan 15, 2008 2:11 AM, Paul Spencer <pspencer at dmsolutions.ca> wrote:
>> Hi all,
>>
>> I've been reminded a couple of times recently of the work I have been
>> doing in the pagameba/transition sandbox. I would like to complete
>> that work in the next few weeks and present it for integration into
>> trunk.
>>
>> In reviewing the current status, I realized that one of the reasons
>> why I stopped working on it was that I got blocked by some challenges
>> in implementing the animation effect that required more invasive
>> changes than I wanted to make at the time. I'll give a brief
>> overview
>> of what changes have been made first, then ask my question.
>>
>> The purpose of the changes in the sandbox is to address one issue and
>> introduce a new feature into OpenLayers. The issue that I wanted to
>> address was the 'flash' on pan of singleTile layers and on zoom of
>> any
>> layers. The new feature that I wanted to create was the ability to
>> create transition effects on zoom. In discussing these issues with
>> Erik, we came up with a way of introducing this new transition
>> capability in such a way as the default behaviour fixed my first
>> issue
>> while providing a framework for implementing the new features.
>>
>> The basic change that we architected was to create the concept of a
>> 'back buffer tile' that sits behind every tile. The back buffer tile
>> is a clone of the tile that is updated through separate logic. When
>> the foreground tile is updated, the back buffer tile is made visible
>> as a place holder until the tile has loaded its new image. Actually,
>> it stays visible until the layer has finished loading.
>>
>> We then scoped out two transition effect, 'resize' and 'animate'.
>> The
>> 'resize' effect simply resizes the back buffer tile image so that its
>> geographic extent is correct within the new zoom level. This
>> stretches or compresses the size of the image and you get a visual
>> place holder that is more or less correct until the new images
>> arrive. The 'animate' effect does the same thing, except it scales
>> the back buffer tile gradually between its old size/location and the
>> new size/location.
>>
>> The current status of the sandbox is that the base architecture and
>> the 'resize' effect have been implemented and seem to work well. The
>> 'animate' effect is implemented but it suffers from a couple of
>> issues:
>>
>> 1) if the layer is panned before zooming, the transition starts where
>> the layer was before panning. This is due to a decision I made to
>> update the back buffer tile position when the transition completes
>> rather than just before it starts. I'm sure I had a good reason for
>> that, but I can't think of it right now. This is fixable and I have
>> toyed with a couple of ways of fixing it but neither struck me as the
>> right way so I am still thinking on this one.
>>
>> 2) if not all the tiles in the grid are being used for a given zoom
>> level, then the back buffer tiles are being left visible and can be
>> seen during zooms. I had originally intended to hide the back buffer
>> tile when the main tile was hidden, but doesn't work since the back
>> buffer tile needs to be visible while the main tile is loading and
>> potentially after it has loaded if the surrounding tiles haven't
>> finished loading.
>>
>> 3) there is some potential for problems if the map is zoomed while
>> the
>> map is still animating, depending on the state of the tile loading.
>>
>> In order to solve these issues, I feel like I have to make some
>> intrusive changes that I need some time to consider carefully, and
>> some review from those more knowledgeable than me about the
>> implications of some of the changes.
>>
>> I would like your feedback on whether I should prepare a patch with
>> the basic back buffer tile support and resize effect (minimizing
>> changes to the current code base), and do a separate animation effect
>> in a later patch, or wait and do a single patch with everything in it
>> (potentially introducing changes with wider impact)?
>>
>> Cheers,
>>
>> Paul
>> ___________________________________________
>>
>> Paul Spencer
>> Chief Technology Officer
>> DM Solutions Group Inc
>> http://www.dmsolutions.ca/
>>
>> _______________________________________________
>> Dev mailing list
>> Dev at openlayers.org
>> http://openlayers.org/mailman/listinfo/dev
>>
Cheers,
Paul
__________________________________________
Paul Spencer
Chief Technology Officer
DM Solutions Group Inc
http://www.dmsolutions.ca/
More information about the Dev
mailing list