Welcome to MSDN Blogs Sign in | Join | Help

A Deep Zoom Blog

Tales of Deep Zoom, creating interesting apps in Silverlight with Deep Zoom, cool new ways to present information
Synchronizing Images with the Deep Zoom content

A very common request I have been getting is some sample that shows how you can synchronize content with Deep Zoom.

Click on the image below to start the app. Zoom in to see the various places I've lived. 

Download the source here.

So how is this done? Really there are two main concept I show in the app:

Synchronizing other content with Deep Zoom

When you set ViewportOrigin or ViewportWidth (or use the ZoomAboutPoint helper), deep zoom simply kicks off an animation to the new location. This animation happens entirely under the hood and is transparent to the developer. That's very nice for the dead simple zooming application, since the developer doesn't have to worry about making pretty animations when zooming and panning. Pretty animations are built in.

However, this behavior does cause a problem if you want to make other things in Silverlight move along with zooming and panning of the Deep Zoom image.

So what's the trick? Everytime a user pans or zooms, this application sets of a 0-length-storyboard that tracks what Deep Zoom is doing, and adjust size and position for the pins. The 0-length-storyboard does its thing for 1500 ms, which is exactly the amount of time Deep Zoom allocates for each animation.

Using powerlaw scaling

Another nifty little feature that was put into this application is powerlaw scaling. The size of the pins only grows at a fraction of the rate of the rest of the map. This needs to be done, since if the size of the pins is kept constant, our eyes fall victim to an optical illusion: when zooming in, the pins would look like they are shrinking, and when zooming out, the appear to be growing.
Power-law scaling makes this visual effect much less noticeable.

Posted: Tuesday, August 19, 2008 1:46 PM by lutzg
Filed under:

Comments

jaybo said:

Cool!  

I've been semi-successful trying to do the same thing by hooking the ViewPortChanged event on MultiScaleImage.  But I'm guessing that adding a large amount of processing to this event will slow down the overall progression of the zoom, and that your approach eliminates this problem.

Is the 1500mS duration hardwired into the MultiScaleImage control and is guaranteed to never change?

Thanks, Jay

# September 10, 2008 3:19 AM

reldes456 said:

Is that possible to make an image with Deep Zoom like this, but set a hotspot in a part of the image, that will link to another page or something?

I was thought to make an application that show some picture and i would like to link those photos to a another page or to a popup page, is that possible with Deep Zoom?

Thank's

Helder Santos

# September 11, 2008 7:44 PM

anakin said:

it's really cool!

thanks. it's good sample/show

# September 14, 2008 1:53 AM

Chinkul said:

Hi

I am using the deep earth code from codeplex - http://www.codeplex.com/deepearth. I have having one issue right now, and not sure how to fix it. It will be great if you help me out with that.

When i search for a location(giving lat, log), the map has to set the focus at that point and zoom it. This will happen as expected for the first time, but when i search for another location, it will not work as desired.

Can you please help me resolve this problem. Its kind of very urgent.

Thanks.

# September 16, 2008 3:24 PM
Leave a Comment

(required) 

(required) 

(optional)

(required) 

  
Enter Code Here: Required

Comment Notification

If you would like to receive an email when updates are made to this post, please register here

Subscribe to this post's comments using RSS

Page view tracker