[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