On Thu, Mar 18, 2010 at 2:58 PM, Alexandre Dube <[email protected]> wrote:
> Hi Devs,
Hi Alexandre,
>
> I'd like to have comments on one matter. I thing this could be a
> OpenLayers-dev thread but I'm not sure. Please let me know.
>
> *Problem*
> When adding WMS layers using the WMSCapabilitiesStore widget, their
> tile size is set to 256x256 (OpenLayers' default value). Please correct
> me if I'm wrong, but I noticed that using tiles rather than singleTile
> for WMS layers is slower.
when there's no tile cache, yes.
> *More info*
> So, for performance reason, I'd rather go with a singleTile: true
> option but since it's possible that the tile generated exceeds the
> maxWidth/Height of the WMS server, we can't use that solution. The only
> way to know would be to use WMS version 1.3.0 where we do know
> maxWidth/Height in the service tag. At this point, we could do something.
I didn't know about maxWidth/Height in 1.3.0, thanks for the information.
>
> *Solution*
> How about this :
> If using 1.3.0, layers could be created normally with the 256x256 tile
> size (because at this point it's not yet linked to any map so it's not
> yet the time to play around the tile size) and we could store the
> maxHeight and maxWidth as new layer options. Then, when the layer is
> added to a map, we could check these values. If the (map size * ratio
> of the singletile) is smaller than maxWidth/Height, then set singleTile
> to true.
>
> Every time the map is resized, we need to check the above condition
> again. If it becomes false, set the singleTile to false and set the
> tile size to maxHeight and maxWidth. I'm not sure if this kind of "on
> map size changed" event could be possible since in OpenLayers you can't
> register a map "resize" event. It needs to be done manually with the
> updateSize method that calls each layer onMapResize methods so they
> would need to be modified.
>
> How about if maxWidth/Height of a WMS layer is set, do the above ? If
> we don't want that to always happen, we could add a flag to trigger this
> when set to true.
>
> Any thoughts ?
I personally don't like the idea of auto switching from
singleTile:fase to singleTile:true and vice-versa. I'd prefer
introducing a useMaxTileSize boolean option to OpenLayers.Layer. When
useMaxTileSize is true, and when maxHeight and maxWidth are specified
in the layer, the tile size will be set to (maxHeight, maxWidth), no
matter the value of tileSize. If maxHeight and maxWidth are not
specified then useMaxTileSize will have no effect.
So in your case I guess you would use {singleTile: true, useMaxTileSize: true}.
Cheers,
--
Eric Lemoine
Camptocamp France SAS
Savoie Technolac, BP 352
73377 Le Bourget du Lac, Cedex
Tel : 00 33 4 79 44 44 96
Mail : [email protected]
http://www.camptocamp.com
_______________________________________________
Dev mailing list
[email protected]
http://www.geoext.org/cgi-bin/mailman/listinfo/dev