This project is read-only.

Using Int for Zoomlevel - breaks application

Oct 23, 2008 at 6:11 AM
I noticed the latest code has put Zoomlevel back to being an Integer.
The issue this causes is when you calulated a pixel -> Lat/Long or inverse it will not be accurate.
The effect on the map is pins seems to fly in, and while the animation lasts during a zoom in a pan has random results.

Do we want the zoomlevel to be a double or can we seperate the logic to not use the zoomlevel but rather the actual value of the MSI at that time?
Oct 23, 2008 at 12:53 PM
I'm in favor of having the zoom level be a double for higher precision.
Oct 23, 2008 at 2:45 PM
I went back through the logs on IMap and can't find an instance when ZoomLevel was anything but an integer. That being said, I do agree that ZoomLevel should be a double to account for situations when you are between zoom levels. In an application that I am currently working on at my job, I split them out. I have a ZoomLevel that is a double and a LevelOfDetail that represents the tile level of detail, which would be the current zoom level.
Oct 23, 2008 at 7:53 PM
I'll add my thought $0.02 that this should be a double throughout.  Allows for better precision in a variety of situations. 
Oct 23, 2008 at 11:21 PM
Clearly I am wrong about it previously being a double - we must have stopped depending upon it for the calculations. The reason we want people to use the whole zoomlevel, that is ZoomLevel "8" rather then "8.5" is that it reduces the blending effect that DeepZoom applies. This can look very poor in Hybrid and Road styles.
That said, a common request is the ability to size the map to exactly fit the screen, or zoom to include just a set of points. Just becouse Virtual Earth tiles don't blend well, should we only cater for them?
Big thanks for all your work Shaun.
Oct 24, 2008 at 12:49 AM
Correct, it was originally made an integer to remove some of the blend between zoom levels (I forgot about that). As for zooming to a set of points, we do support setting the bounds. Granted it won't set the bounds to be exactly what is passed, but rather use the ZoomLevelProvider to determine the zoom level that would allow the map to contain the bounds passed in.