[OpenLayers-Users] Cluster strategy not working

Max Stephan x.zam at gmx.net
Mon Aug 31 04:41:03 EDT 2009


Hi Jerome and Heidtmare,

I tried to add all vectorfeatures at once before because I saw that´s the
case in the example-site as well. But it didn´t help. So I performed a
little bit of "trial and error" and after changing my code to
adding-all-features-at-once AND erasing the codeline
clusterStrategy.activate() it works. If I don´t erase it I get the error "
'this.layer.map' is null or no object".

Thx to all of you
Max Stephan

Jerome Freyre wrote:
> 
> Heidtmare is right and faster than me.... :D
> 
> Have a look to http://openlayers.org/dev/examples/strategy-cluster.html to
> modify the size of cluster depending of the number of feature they
> represent
> 
> 
> 
> Here is a script that is working. And think that you can 
> 
> PS: Sorry for the "double post" I push the wrong button :)
> 
> 	        var map, wfs;
> 
> 			var styleMap1 = new OpenLayers.StyleMap({
> 		        "default": new OpenLayers.Style(
> 		            {
> 		                 fillColor: "#0000FF",
> 		                 strokeColor: "#0000FF",
> 		                 pointRadius: 6
> 		            }
> 		        )
> 		    });
> 
> 			function init(){
> 			                map = new OpenLayers.Map('map');
> 			                var wms = new OpenLayers.Layer.WMS(
> 			                    "OpenLayers WMS",
> 			                    "http://labs.metacarta.com/wms/vmap0?",
> 			                    {layers: 'basic'}
> 			                );
> 			                map.addLayer(wms);
> 			                map.zoomToMaxExtent();
> 			
> 			
> 							var strat = new OpenLayers.Strategy.Cluster({distance:20});
> 										vectorLayer = new OpenLayers.Layer.Vector("Vektorlayer",{
> 										strategies: [
> 											strat
> 										],
> 										styleMap: styleMap1, maxResolution: 19});
> 										strat.activate();
> 
> 			map.addLayers([vectorLayer]);
> 			
> 			/**
> 			 * Generate datas // Simulate your data access
> 			 */
>             var dx = 3;
>             var dy = 3;
>             var px, py;
>             featuresToBeClustered = [];
>             for(var x=-45; x<=45; x+=dx) {
>                 for(var y=-22.5; y<=22.5; y+=dy) {
>                     px = x + (2 * dx * (Math.random() - 0.5));
>                     py = y + (2 * dy * (Math.random() - 0.5));
>                     featuresToBeClustered.push({
> 						'lonlat':new OpenLayers.LonLat(px,py),
> 						'id':px+'  '+py
> 					});
>                 }
>             }
> 			/**
> 			 * Populate the array of feature
> 			 */
> 			var arrayOfFeatures = [];
> 			for (var i=0; i<featuresToBeClustered.length; i++){
> 			    arrayOfFeatures.push(generateFeature(vectorLayer,
> featuresToBeClustered[i].lonlat, featuresToBeClustered[i].id));
> 			}
> 			
> 			/**
> 			 * Add all features in one time
> 			 */ 
> 			vectorLayer.addFeatures(arrayOfFeatures);
> 			
> 			
> 			
> 			map.setCenter(new OpenLayers.LonLat(0, 0), 2);
> 			
> 		}
> 		/**
> 		 * Modification of you function
> 		 */
> 		function generateFeature(layer, lonlat, mestId){
> 		   var geometryObjekt = new
> OpenLayers.Geometry.Point(lonlat.lon,lonlat.lat);
> 		   var vectorObjekt = new OpenLayers.Feature.Vector(geometryObjekt);
> 		   vectorObjekt.attributes.mest = mestId;
> 		   return vectorObjekt;
> 		}
> 
> 
> 
> 
> Heidtmare wrote:
>> 
>> i believe you need to add all your features at once,
>> so instead of looping the layer.addFeatures() call
>> you need to build all your features into an array and then call
>> layer.addFeatures() once.
>> 
>> 
>> 
> 
> 

-- 
View this message in context: http://n2.nabble.com/Cluster-strategy-not-working-tp3533851p3552202.html
Sent from the OpenLayers Users mailing list archive at Nabble.com.



More information about the Users mailing list