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 <[EMAIL PROTECTED]> 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 > [email protected] > http://openlayers.org/mailman/listinfo/dev > _______________________________________________ Dev mailing list [email protected] http://openlayers.org/mailman/listinfo/dev
