[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