[OpenLayers-Users] Cluster strategy not working

Max Stephan x.zam at gmx.net
Mon Aug 31 05:58:44 EDT 2009


I also noticed that it´s only working that I´ve added the VectorLayer to the
map BEFORE I´m adding the features to the VectorLayer.

Greets
Max Stephan

Max Stephan wrote:
> 
> 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-tp3533851p3552507.html
Sent from the OpenLayers Users mailing list archive at Nabble.com.



More information about the Users mailing list