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

Eric Lemoine eric.c2c at gmail.com
Thu Nov 13 12:12:53 EST 2008


You guys are good to find bugs :-)

I think that, instead of listening to the map's zoomend events, the
cluster strategy should listen to its layer's moveend events and check
in the listener that this is actually a zoom change before doing
anything. The moveend listener receives an object with a zoomChanged
boolean property. Can one of you try modifying the cluster strategy
with that and report back? (don't forget to change the unregistration
as well).

Thanks.

Eric

2008/11/13, Ivan Grcic <ivan.grcic at geofoto.hr>:
> 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
> _______________________________________________
> Dev mailing list
> Dev at openlayers.org
> http://openlayers.org/mailman/listinfo/dev
>


More information about the Dev mailing list