[OpenLayers-Users] Smooth transition between two Image layers

Kenneth Skovhede, GEOGRAF A/S ks at geograf.dk
Tue Jul 15 02:33:54 EDT 2008


As I understand Christopher's answer, this is not built into OpenLayers.
So, you must modify the source code yourself to get this behavior.

"Nothing you can do" then translates to, "There is no option you can 
switch on".

You can start up by looking into Layer\Image.js and the function "setUrl"
which calls Tile\Image.js "draw", which in turn invokses .\Tile.js "draw".

You can see here that it calls "clear", which is implemented in 
Tile\Image.js.
I suppose you can simply comment out line 188 in Tile\Image.js:
    clear: function() {
        if(this.imgDiv) {
            //this.hide();  --> Commented out
            if (OpenLayers.Tile.Image.useBlankTile) {
                this.imgDiv.src = OpenLayers.Util.getImagesLocation() + 
"blank.gif";
            }   
        }
    },

I have not tested it, so i probably has some sideeffects.
You may also want to turn on Smooth transition, as that prevents the 
original
image from hiding before the new one is visible.

And it is fairly annoying to maintain a modified version of OpenLayers, 
so if at all possible,
you should consider adding this as a selectable option, and submitting 
the change as a patch.

Another option is to replace the function at runtime, but that is bound 
to break when
 OpenLayers is updated.

Regards, Kenneth Skovhede, GEOGRAF A/S



Jesper Larsen skrev:
> Hi Christopher, realjax and others,
>
> As I understand your answer Christopher there is nothing I can do to
> avoid the blinking. Is that a correct understanding? In case that is
> not how I should understand your answer I have setup a minimal demo of
> the problem on:
>
> http://jlar.webfactional.com/static/
>
> When you press the switch button (with most of the browsers I have
> tested) the OpenLayers map blinks but the ordinary html img attribute
> does not. Any help on this issue is still very welcome.
>
> Regards,
> Jesper
>
>
> 2008/7/11 Christopher Schmidt <crschmidt at metacarta.com>:
>   
>> On Fri, Jul 11, 2008 at 12:37:05AM -0700, realjax wrote:
>>     
>>> Jesper-5 wrote:
>>>       
>>>> Is the solution to this to use Tween to create a smooth transition
>>>> between to Layers? I tried it but I haven't been able to understand
>>>> how to do it. I hope someone can help me out. What I tried is simply:
>>>>
>>>>         
>>> OpenLayers.Tween is not likely going to suit your needs.
>>> I think you need to search for an external solution that has one layer fade
>>> out while the other fades in. You could (with a bit of hacking)  prolly get
>>> this working in combination with a lightweight framework like Mootools for
>>> example.
>>>       
>> I don't think this will do what he wants. The proble is that OpenLayers
>> intentionally hides images before they're loaded -- look at delayDisplay
>> in OpenLayers.Util.createImage.
>>
>> In general, we have put no effort into changing this behavior.
>>
>> Regards,
>> --
>> Christopher Schmidt
>> MetaCarta
>> _______________________________________________
>> Users mailing list
>> Users at openlayers.org
>> http://openlayers.org/mailman/listinfo/users
>>     
> _______________________________________________
> Users mailing list
> Users at openlayers.org
> http://openlayers.org/mailman/listinfo/users
>   
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.osgeo.org/pipermail/openlayers-users/attachments/20080715/f83e9b98/attachment.html


More information about the Users mailing list