change it to be 

var zoom = map.getZoom();
console.log('zoom is ' + zoom);
if (zoom < clusterMaxZoom)

so that you can see what the actual zoom levels are.

On 2011-02-16, at 9:54 AM, Mihai Visan wrote:

> Hi Paul,
>  
> from what I know about OpenLayers your code is what I'm looking for, but I 
> can't make the event working. What is interesting is that if I change what is 
> with red it deactivate cluster strategy no matter the zoom level.
>  
> map.events.register("move", null, function() {  // #2, #3 respond to map 
> extent change
>        // disable cluster when zoom greater than threshold
>          if (map.getZoom() < clusterMaxZoom) {  // #2.1 how to read current 
> zoom
>            clusterStrategy.deactivate();  // #2.2 how to disable cluster 
> strategy
>         } else {
>            clusterStrategy.activate();
>         }
>    });
>  
> Help me please.
>  
> Here is my code:
>  
> ....................................................................
>  
> <html>
> <head>
> <title>OpenLayers Test</title>
> <script type="text/javascript" src="js/OpenLayers.js"></script>
> <script defer="defer" type="text/javascript">
>     function init(){
>    
>     // styles for cluster strategy   
>     var style = new OpenLayers.Style({
>                     fillColor: "${fill_color}",
>                     fillOpacity: 0.4,
>                     pointRadius: "${radius}",
>                     strokeColor: "${stroke_color}",
>                     strokeOpacity: 1,
>                     strokeWidth: 1
>                     },
>                     {
>                     context: {
>                         radius: function(feature) {
>                             var pix = 8;
>                             if(feature.cluster) {
>                                 pix = Math.min(feature.attributes.count, 11) 
> + 8;
>                             }
>                             return pix;
>                         },
>                         fill_color: function(feature) {
>                                 if(feature.cluster) {
>                                     maxImportance = 0;
>                                     for(var c = 0; c < 
> feature.cluster.length; c++) {
>                                         i = 
> feature.cluster[c].attributes.importance;
>                                         if(i > maxImportance) {
>                                             maxImportance = i;
>                                             mainFeature = c;
>                                         }
>                                     }
>                                     feature.attributes.fillColor = 
> feature.cluster[mainFeature].attributes.fillColor;
>                                 }
>                                 return feature.attributes.fillColor;
>                         },
>                         stroke_color: function(feature) {
>                                 if(feature.cluster) {
>                                     maxImportance = 0;
>                                     for(var c = 0; c < 
> feature.cluster.length; c++) {
>                                         i = 
> feature.cluster[c].attributes.importance;
>                                         if(i > maxImportance) {
>                                             maxImportance = i;
>                                             mainFeature = c;
>                                         }
>                                     }
>                                     feature.attributes.strokeColor = 
> feature.cluster[mainFeature].attributes.strokeColor;
>                                 }
>                                 return feature.attributes.strokeColor;
>                         }
>                     }
>     });
>                 
>     /* Creating the Map Viewer */
>         /*In order to create the viewer, you must first create a map. The 
> OpenLayers.Map constructor requires one argument: This argument must either 
> be an HTML Element, or the ID of an HTML element. This is the element in 
> which the map will be placed.*/
>     var map = new OpenLayers.Map("map", {
>         controls: [
>             new OpenLayers.Control.Navigation(),
>             new OpenLayers.Control.PanPanel(),
>             new OpenLayers.Control.ZoomPanel(),
>             new OpenLayers.Control.LayerSwitcher()        /* Open the switch 
> layers panel */
>         ],
>         maxResolution: 'auto',
>         numZoomLevels: 6        // maximum zoom
>     });
>    
>     /*Map Constructor*/
>         /* The next step to creating a viewer is to add a basic layer to the 
> Map. */
>     var basicMapLayer = new OpenLayers.Layer.Image(
>           "Map Image",
>           "images/maps/MapImage.jpg",
>           new OpenLayers.Bounds(0, 0, 510, 510),
>         new OpenLayers.Size(510, 510)
>      );
>    
>     /* Adding an Multipoint Vector Layer with cluster strategy */
>     var clusterStrategy = new OpenLayers.Strategy.Cluster({distance: 20});
>    
>     var monuments = new OpenLayers.Layer.Vector("Monuments", {
>                         strategies: [clusterStrategy],
>                         styleMap: new OpenLayers.StyleMap({"default": style})
>                     });
>    
>     // cluster threshold
>     var clusterMaxZoom = 2; // maximum zoom is 6
>    
>     map.events.register("move", null, function() {  // #2, #3 respond to map 
> extent change
>         // disable cluster when zoom greater than threshold
>           if (map.getZoom() > clusterMaxZoom) {  // #2.1 how to read current 
> zoom
>             clusterStrategy.deactivate();  // #2.2 how to disable cluster 
> strategy
>          } else {
>             clusterStrategy.activate();
>          }
>     });
>    
>     var point_1 = new OpenLayers.Geometry.Point(270, 205);   
>             var point_1_Feature = new OpenLayers.Feature.Vector(point_1);
>             point_1_Feature.attributes = {
>                 strokeColor: "#ffffff",
>                 fillColor: "#ffffff",
>                 importance: 9
>             }
>  
>     var point_2 = new OpenLayers.Geometry.Point(263, 201);   
>         var point_2_Feature = new OpenLayers.Feature.Vector(point_2);
>             point_2_Feature.attributes = {
>                 strokeColor: "blue",
>                 fillColor: "blue",
>                 importance: 3
>             }
>    
>        var point_3 = new OpenLayers.Geometry.Point(260, 202);
>             var point_3_Feature = new OpenLayers.Feature.Vector(point_3);
>             point_3_Feature.attributes = {
>                 strokeColor: "yellow",
>                 fillColor: "yellow",
>                 importance: 5
>             }
>    
>     var point_4 = new OpenLayers.Geometry.Point(261, 202);
>             var point_4_Feature = new OpenLayers.Feature.Vector(point_4);
>             point_4_Feature.attributes = {
>                 strokeColor: "yellow",
>                 fillColor: "yellow",
>                 importance: 5
>             }
>    
>     var point_5 = new OpenLayers.Geometry.Point(263, 202);
>             var point_5_Feature = new OpenLayers.Feature.Vector(point_5);
>             point_5_Feature.attributes = {
>                 strokeColor: "yellow",
>                 fillColor: "yellow",
>                 importance: 5
>             }
>    
>     /* Layer Constructor */
>         /* In order to display the map, you must set a center and zoom level. 
> In order to zoom to fit the map into the window, you can use the 
> zoomToMaxExtent function, which will zoom as close as possible while still 
> fitting the full extents within the window. */
>     map.addLayers([basicMapLayer, monuments]);
>     map.zoomToMaxExtent();
>  
>         // features for layer with cluster strategy must me declared after 
> layer is added in order to work
>         var monumentsFeature = new OpenLayers.Feature.Vector(
>                                     new 
> OpenLayers.Geometry.MultiPoint([point_1, point_2, point_3, point_4, point_5])
>                                 );
>         monuments.addFeatures([point_1_Feature, point_2_Feature, 
> point_3_Feature, point_4_Feature, point_5_Feature]);
>    
>     // end of init function
>     }
> </script>
> </head>
> <body onLoad="init()">
> <div style="width:100%; height:100%; border:#000 1px solid; 
> background:#000000;" id="map"></div>
> </body>
> </html>
>  
> ....................................................................
>  
> -----Original Message-----
> From: Paul Spencer
> Sent: Wednesday, February 16, 2011 3:37 PM
> To: Mihai Visan
> Cc: OpenLayers User list
> Subject: Re: [OpenLayers-Users] cluster strategy
>  
> I don't know your code but I would assume that you are looking for something 
> like this:
>  
> var map = new OpenLayers.Map('mapDiv', mapOptions);
> var clusterStrategy = new OpenLayers.Strategy.Cluster(clusterOptions);
> var layerOptions = {
>   strategies: [clusterStrategy]
> };
> var vectorLayers = new OpenLayers.Layer.Vector('features', layerOptions);
>  
> // cluster threshold
> var clusterMaxZoom = 10;
>  
> map.events.register('move', null, function() {  // #2, #3 respond to map 
> extent change
>   // disable cluster when zoom greater than threshold
>   if (map.getZoom() > clusterMaxZoom) {  // #2.1 how to read current zoom
>     clusterStrategy.deactivate();  // #2.2 how to disable cluster strategy
>   } else {
>     clusterStrategy.activate();
>   }
>  
>   // filter features based on bounding box
>   var extent = map.getExtent();  // #3.1
>  
>   // reload features here, it depends on how you read your features in now
>  
> });
>  
> If you are not using a Protocol like WFS () with your layer then the BBOX 
> strategy will have no effect and you will have to manually reload features 
> using whatever mechanism you are using now.
>  
> Cheers
>  
> Paul
>  
> On 2011-02-16, at 7:58 AM, Mihai Visan wrote:
>  
> > Thanks Paul,
> >
> > I already read the documentation and all tutorial and user discusions I 
> > could found.
> >
> > But I'm a week at javascript, so I could use some examples or tutorials  I 
> > could transform
> >
> > -----Original Message----- From: Paul Spencer
> > Sent: Wednesday, February 16, 2011 2:43 PM
> > To: Mihai Visan
> > Subject: Re: [OpenLayers-Users] cluster strategy
> >
> > Mihai, all of your questions have answers in the documentation ...
> >
> > On 2011-02-16, at 7:29 AM, Mihai Visan wrote:
> >
> >> 2. disable cluster strategy at certain zoom level.
> >>    Problems:     2.1. I don’t know how to read current zoom
> >
> > http://dev.openlayers.org/releases/OpenLayers-2.10/doc/apidocs/files/OpenLayers/Map-js.html#OpenLayers.Map.getZoom
> >
> >>                        2.2. I don’t know to disable cluster strategy
> >
> > http://dev.openlayers.org/releases/OpenLayers-2.10/doc/apidocs/files/OpenLayers/Strategy/Cluster-js.html#OpenLayers.Strategy.Cluster.deactivate
> >
> >>
> >> 3. use (BBOX strategy and) ajax to disable features outside visible bounds
> >>    Problems:    3.1. I don’t know how to read visible bounds
> >
> > http://dev.openlayers.org/releases/OpenLayers-2.10/doc/apidocs/files/OpenLayers/Map-js.html#OpenLayers.Map.getExtent
> >
> >>                       3.2. I don’t know  how to integrate ajax with (BBOX 
> >> and) mouse drag or zoom in/out
> >
> > http://dev.openlayers.org/releases/OpenLayers-2.10/doc/apidocs/files/OpenLayers/Map-js.html#OpenLayers.Map.EVENT_TYPES
> >
> > Cheers
> >
> > Paul
>  

_______________________________________________
Users mailing list
[email protected]
http://lists.osgeo.org/mailman/listinfo/openlayers-users

Reply via email to