[OpenLayers-Users] Clustering and addFeatures method

Jacolin Yves yjacolin at free.fr
Wed Oct 22 10:49:11 EDT 2008


Le Wednesday 22 October 2008 16:00:36 Jacolin Yves, vous avez écrit :
> Le Wednesday 22 October 2008 15:39:57 arno974, vous avez écrit :
> > Ahh okay i understand what you want.
> >
> > With the OpenLayers.Strategy.Cluster you can only  merge the features
> > when they are close to each other. In your example, the two points have
> > been merge into only one.
> >
> > If you want to enlarge the radius size of the point you must change with
> > the pointRadius parameter of your Style object :
> >
> > for example :
> >
> >  var style = new OpenLayers.Style({
> >                          pointRadius: "${radius}",
> >                          fillColor: "#ffcc66",
> >                          fillOpacity: 0.8,
> >                          strokeColor: "#ff0000",
> >                          strokeWidth: 2,
> >                          strokeOpacity: 0.3
> >                      }, {
> >                          context: {
> >                              radius: function(feature) {
> >                                     /*
> > console.log(Math.min(feature.attributes.count,7) + 4);
> >
> > if((Math.min(feature.attributes.count,7) + 4)<7) {
> >                                             return
> > Math.min(feature.attributes.count,7) + 3;
> >                                         }
> >                                         else {return
> > Math.min(feature.attributes.count,7) + 7;} */
> >                                 return
> > Math.min(feature.attributes.count,7) + 4;
> >                              }
> >                          }
> >                      });
> >
> > GML = new OpenLayers.Layer.Vector(
> >                         "GML", {
> >                          strategies:[
> >                                             new
> > OpenLayers.Strategy.Fixed(), new
> > OpenLayers.Strategy.Cluster()
> >                               ],
> >                          protocol: new OpenLayers.Protocol.HTTP({
> >                              url: "./poi_random/gml/random_poi.gml",
> >                              format: new OpenLayers.Format.GML()
> >                          }),
> >                             styleMap:new OpenLayers.StyleMap({
> >                              "default": style,
> >                              "select": {
> >                                  fillColor: "#8aeeef",
> >                                  strokeColor: "#32a8a9"
> >                              }
> >                          })
> >                      });
> >
> >
> >
> > it merge the features when they are
> >
> > Yves Jacolin (free) wrote:
> > > Le Wednesday 22 October 2008 12:33:04 arno974, vous avez écrit :
> > >> Hello Yves,
> > >>
> > >> Tried to add a new OpenLayers.Strategy.Fixed(), in your strategies and
> > >> it should work.
> > >> I noticed that the cluster doesn't work if i don't use the fixed
> > >> strategy.
> > >> Maybe a bug or i didn't use it in a good way.
> > >>
> > >> Here you will find an example : http://geotribu.net/?q=node/47
> > >>
> > >> Regards
> > >>
> > >> Arnaud
> > >>
> > >> Yves Jacolin (free) wrote:
> > >> > Hello,
> > >> >
> > >> > I am trying to set up a cluster strategy for one of my vector layer.
> > >> > I add this code to my existing code:
> > >> >   var vector = new OpenLayers.Layer.Vector(name,
> > >> >                   {
> > >> >                      strategies: [
> > >> >                         new
> > >> > OpenLayers.Strategy.Cluster({distance:20}) ]
> > >> >                   }
> > >> >                 );
> > >> > Before this, the code was " var vector = new
> > >> > OpenLayers.Layer.Vector(name);"
> > >> >
> > >> > I fill my vectorLayers later, reading a postgis result with:
> > >> >
> > >> > var feature = wktParser.read(_tmp[1]);
> > >> > [..]
> > >> > vectorLayer.addFeatures([ feature ]);
> > >> >
> > >> > I get only one feature (instead of 2) for all the zoom level. I
> > >> > tried
> > >>
> > >> to
> > >>
> > >> > change the distance option above, but nothing append. If I check the
> > >>
> > >> DOM,
> > >>
> > >> > nothing show me that there are more than 1 feature in this layer.
> > >> >
> > >> > Where am I wrong?
> > >> >
> > >> > Y.
> > >> > PS : the code is much more longer than here and is split in several
> > >> > functions
> > >> > so I can't show you all in once, I tried to put the most readable as
> > >> > possible.
> > >> > --
> > >> > Yves Jacolin
> > >
> > > Hi,
> > >
> > > Thanks Arnaud, but it doesn't change anything for me, except that now I
> > > have
> > > to define a protocol parameter in my Vector constructor.
> > >
> > > Do I need to load data when creating the layer? Currently I load my
> > > data later
> > > in the process (at the end of the page) as I need to load different
> > > data after the search process.
> > >
> > > Y.
> > > --
> > > Yves Jacolin
> > > ---
> > > http://softlibre.gloobe.org
> > > _______________________________________________
> > > Users mailing list
> > > Users at openlayers.org
> > > http://openlayers.org/mailman/listinfo/users
>
> Hi,
>
> Sorry, same problem: I think there is another problem somewhere. I have 4
> features, each time I see one of them. I should see at least 3 features, as
> 2 are in the same street so have to be in one cluster.
>
> The issue is that when I zoom on one feature (in "La defense", west of
> Paris), it disapears and after zooming out, another feature appear (in the
> south-east of Paris) in other location. Strange behaviour ;)
>
> Y.
> PS : http://softlibre.free.fr/ol/test.html updated!

Hi,

I succeed to user cluster stratey for a GML layer, not using this layer:
    var vectorLayer = new OpenLayers.Layer.Vector("Building",
      {
                  strategies: [
                    new OpenLayers.Strategy.Fixed()
                  ],
                  protocol:  new OpenLayers.Protocol.HTTP({
                        format: wktParser
                  })
      });

adding feature with something "vectorLayer.addFeatures([ feature ]);" later in 
the code.

Each time I add "new OpenLayers.Strategy.Cluster({distance: 300})" (for all 
distance number used) I get only one feature.

Any idea ?

Y.
PS : I updated http://softlibre.free.fr/ol/test.html
-- 
Yves Jacolin
---
http://softlibre.gloobe.org



More information about the Users mailing list