[OpenLayers-Dev] Roundoff error disables overlays with no minScale when fully zoomed in

David Fuhry dfuhry at acm.org
Sat Aug 23 15:52:35 EDT 2008


My OpenLayers map was disabling layers with no minScale only at the most 
zoomed-in level.  Some firebug debugging showed that at that level, in 
OpenLayers.Layer.calculateRange, this.map.getResolution() returns 
0.14999999999999977 while this.minResolution is 0.15.  My map 
initialization parameters include { minResolution: 0.15 } so it would 
seem paradoxical that this.map.getResolution() can return a value < 0.15.

Obviously there is a small roundoff problem here, which could be brushed 
over by putting a very small tolerance (epsilon) value into the 
calculateRange calculation:

inRange = ( (resolution >= this.minResolution /* - tolerance */) && 
                   (resolution <= this.maxResolution /* + tolerance */) );

My approach was to change the layer's minResolution from 0.15 to 
Number.NEGATIVE_INFINITY.  It unfortunately accomplishes this specious 
task in a rather blunt way, clobbering the value of any 
{min,max}Resolution parameters passed to Layer constructors.

Maybe this.map.getResolution() should just be tweaked to snap its value 
to {min,max}Resolution if it's ever-so-slightly beyond one.  Any 
thoughts on the best course of action?

Thanks,

Dave Fuhry

P.S. Full map initialization params are:  { maxExtent: new 
OpenLayers.Bounds(-20000000,-20000000,20000000,20000000), maxResolution: 
10000, minResolution: 0.15, numZoomLevels: 16, units: "m" }.  I'm using 
a spherical mercator projection.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: ol_minmax_res_inf.patch
Type: text/x-patch
Size: 673 bytes
Desc: not available
Url : http://lists.osgeo.org/pipermail/openlayers-dev/attachments/20080823/c5795ac3/ol_minmax_res_inf.bin


More information about the Dev mailing list