[OpenLayers-Dev] Cluster strategy should not process data when layer is currently disabled (visibility=false)

Ivan Grcic ivan.grcic at geofoto.hr
Thu Nov 13 10:06:27 EST 2008


Hi Alex,

i made a little hack to it...inside Strategy.Cluster.js inside cluster
function  I added one more check:
(OpenLayers.Util.indexOf(this.layer.resolutions, resolution) != -1)

it doesnt do the clustering if current resolution is not contained
inside layers array of resolutions.

Index: Cluster.js
===================================================================
--- Cluster.js	(revision 8317)
+++ Cluster.js	(working copy)
@@ -141,7 +141,8 @@
     cluster: function() {
         if(this.features) {
             var resolution = this.layer.map.getResolution();
-            if(resolution != this.resolution || !this.clustersExist()) {
+           if((OpenLayers.Util.indexOf(this.layer.resolutions,
resolution) != -1) && (resolution != this.resolution ||
!this.clustersExist())) {
                 this.resolution = resolution;
                 var clusters = [];
                 var feature, clustered, cluster;

Greetings,
Ivan
On Thu, Nov 13, 2008 at 3:02 PM, Alexandre Dube <adube at mapgears.com> wrote:
> I get the same behavior as Ivan's on my application which has very similar
> resolution settings on map an vector layer.
>
> Because a layer's features are not destroyed when it goes out of range
> (inRange) or becomes invisible (visibility), the cluster strategy still
> clusters those existing features. I don't have that many features to display
> when the layer becomes inRange, so I never noticed any slowing down.
>
> Alexandre
>
> Ivan Grcic wrote:
>>
>> This post evolved from previous discussion named "bbox strategy and
>> zooming"
>>
>> Clustering features with cluster strategy takes some time. If there
>> are many features to cluster, it will take even more time :)
>>
>> So there are some scenarios where clustering shouldnt be recalculated.
>>
>> Example:
>> I want to see my cluster layer only after 5th zoom level. No
>> clustering should be made when i play on zoom level 0-4 with other
>> layers,
>>  because it slows things down, and the cluster layer is still not
>> visible at all (its only clustering features in background)
>>
>> It should only cluster when layer is visible (and the current map
>> resolution is inside array resolution of clustered layer, if we define
>> seperate set of resolution)
>>
>> So if map has:
>> resolutions: [0,1,2,3,4,5,6,7,8,9]
>>
>> and vector layer:
>> resolutions: [5, 6, 7, 8, 9]
>>
>> clustering should occur only on vector layers resolution :5, 6, 7, 8 and
>> 9.
>>
>> I hope you see where im pointing now,
>>
>> Best regards,
>>
>>
>>
>
>
> --
> Alexandre Dubé
> Mapgears
> www.mapgears.com
>
>



-- 
Ivan Grcic



More information about the Dev mailing list