OpenLayers OpenLayers

Ticket #1055 (closed bug: duplicate)

Opened 1 year ago

Last modified 1 year ago

Tiles Loading when Layer Invisible

Reported by: euzuro Assigned to: euzuro
Priority: major Milestone: 2.6 Release
Component: Layer Version: 2.5 RC3
Keywords: Cc:
State:

Description

From GregM on the users@ list:

There is still a problem with layer tiles downloading depending on map scale
value in 2.5 RC.

Tiles for invisible layers are downloaded from server after layer(s) goes
beyond its minScale.
Value of minScale is making layer not downloaded while map initialization
but downloaded after zooming to scale < minScale, even if layer is not
switched on.

This makes server much more busy and generate unneeded traffic, resulting in
map page much less respondent, especially with large overlays.

Change History

10/03/07 16:47:06 changed by crschmidt

This is a duplicate of #937, but the description should be merged with that one so that this is clear.

10/08/07 16:35:21 changed by euzuro

update from gregm:

I have corrected it in Map.js setCenter function, with some additional lines
of checks and conditions inside 'for' loop.
It works for me, but I do not know if it is good for any case.
Code below:
>
> for (var i = 0; i < this.layers.length; i++) {
>                 var layer = this.layers[i];
>                 if (!layer.isBaseLayer) {
>
>                     var moveLayer;
>                     var inRange = layer.calculateInRange();
>                     if (layer.inRange != inRange) {
>                         // Layer property has changed. We are going
>                         // to call moveLayer so that the layer can be
> turned
>                         // off or on.
>                         layer.inRange = inRange;
>                         //do NOT download tiles if not in scale limit
>                         moveLayer = (layer.visibility && layer.inRange);
> //
> was ... = true;
>                         //switch off layer after going beyond scale limit
>                         if (layer.visibility && !layer.inRange)
>                             layer.setVisibility(false);
>                         this.events.triggerEvent("changelayer");
>                     } else {
>                         // If nothing has changed, then we only move the
> layer
>                         // if it is visible and inrange.
>                         moveLayer = (layer.visibility && layer.inRange);
>                         //switch off layer after going beyond scale limit
>                         if (layer.visibility && !layer.inRange)
>                             layer.setVisibility(false);
>                     }
>                     if (moveLayer) {
>                         layer.moveTo(bounds, zoomChanged, dragging);
>                     }
>                 }
>             }



Greg

10/12/07 23:35:12 changed by crschmidt

  • status changed from new to closed.
  • resolution set to duplicate.

Merged ticket description into #937.