Hi, I would say your solution depends on two things: level of interactivity you want to achieve and browser limits.
Most important thing to have in your mind: Browser limit says don't load more then (having IE in mind) -> 100-150 features! Off course we would like to have the highest level of interactivity, that is, to have all the features loaded - vector layer, so we can have fast hover/click effects on features. But because of browser limits that's not possible. So depending on your data, we can cope with this with different solutions: 1) Use wms layer with GetFeature control http://openlayers.org/dev/examples/getfeature-wfs.html Like this all the feature show up, but you only get some info when you click on it. Bad thing is that sometimes it takes some time to query the features (lower interactivity), so make sure you have fast response from your server for this (spatial index data usually helps ;) Use this for large scales of you layer 2) Use vector layers. Use this solutions when you are sure that you wont be requesting lots of features at once (browser limits). Using BBOX with Cluster strategy is not a bad solution. Use this for small scales (small areas -> less features are requested) One important note here: Cluster strategy that we have here is a client solution, that means all the data has to be received before they are clustered. Example: we have 5000 points. If we use cluster strategy they will be visualized with, lets say, 100 points -> within browser limits right? But what about the data transfer and expensive calculations of clusters (every time we zoom in?) Conclusion: be careful with cluster strategy, don't use it if you have more then few hundreds features (and use it together with BBOX strategy) 3) Develop server clustering - this should be the best solution I think (most intereactive also) Let server process the data, and make clusters for you, with some basic cluster info - like geometry, number of features in cluster etc. Then you make vector layer out of it, and implement lets say hover effect that get basic data, and on click you make GetFeatureInfo request that gets the rest of the data. The best example that works in similar way is maps.google.com with Wikipedia & Photos layers, where you can see tons of images at once without lots of stress on thebrowser. Its wms layer with clusters in background, and div elements (or image map?, im not sure) in front. Cheers On Wed, Nov 25, 2009 at 4:59 PM, Alexandre Dube <[email protected]> wrote: > Hey, > > 40.000 is sure big. You could try the Cluster strategy [1], or have you > points in WMS when zoomed out then changed to WFS when zoomed in. The > latter is what I'm doing in the demo I sent you. Load it, then zoom > out. You'll see that the roads switch from WFS to WMS. You could also > do that. > > Best regards, > > Alexandre > > [1] http://openlayers.org/dev/examples/strategy-cluster.html > > > JuKiM wrote: >> Ok.. >> >> And about the other question.. If in the datasource there are about >> 40.000 positions... Is a good way to try loading them with WFS? Or >> using WMS is recommended? >> >> Thanks! >> >> >> 2009/11/25 Alexandre Dube <[email protected] <mailto:[email protected]>> >> >> Hi, >> >> Just before your commit, you need to copy the your field values >> to the feature's attributes. They will then be part of the >> 'insert' request sent to your server. See an example (demo) of >> what I'm talking about [1]. It uses TinyOWS, but it should be >> similar to what you're seeking to do. >> >> Hope this helps, >> >> Alexandre >> >> >> [1] http://dev4.mapgears.com/bdga/bdgaWFS-T.html >> >> >> JuKiM wrote: >> >> Hi, >> >> I'm searching documentation about WFS-T, because with I can >> understand, it let to create new entries in the datastore >> through the GeoServer.... >> >> I create the map, and a wms layers which is displayed, and >> then I create the wfs layer.. >> >> wfs = new >> >> OpenLayers.Layer.WFS("Test_Layer","http://localhost:8080/geoserver/wfs", >> {typename: 'Test:dots'}, >> { >> typename: "dots", >> featureNS: "http://www.uriURL.org/test", >> extractAttributes: false, >> commitReport: function(str) { >> alert(str); >> OpenLayers.Console.log(str); >> } >> } >> ); >> >> var draw = new OpenLayers.Control.DrawFeature( >> wfs, OpenLayers.Handler.Point, >> { >> handlerOptions: {freehand: false, multi: true}, >> displayClass: "olControlDrawFeaturePoint" >> } >> ); >> var save = new OpenLayers.Control.Button({ >> trigger: OpenLayers.Function.bind(wfs.commit, wfs), >> displayClass: "olControlSaveFeatures" >> }); >> panel.addControls([ >> new OpenLayers.Control.Navigation(), >> save, draw >> ]); >> map.addControl(panel); >> >> When I save the new points, they are insterted in the DB, but >> with empty values.. Only the auto incremental id is created.. >> In my table there are four fields, 'id', 'location', >> 'description', 'type'. How can I configure the WFS calls to >> create the new entries with all the information? (The >> information about description and type is the same, and is >> stored in a textfield, and the location should be the >> different points of the map.. >> >> And on the other hand, if the datasource contains about 40.000 >> positions, is better to work with WMS and process the >> information in server side? >> >> Thanks! >> >> ------------------------------------------------------------------------ >> >> _______________________________________________ >> Users mailing list >> [email protected] <mailto:[email protected]> >> http://openlayers.org/mailman/listinfo/users >> >> >> >> >> -- >> Alexandre Dubé >> Mapgears >> www.mapgears.com <http://www.mapgears.com> >> >> > > > -- > Alexandre Dubé > Mapgears > www.mapgears.com > > _______________________________________________ > Users mailing list > [email protected] > http://openlayers.org/mailman/listinfo/users > -- Ivan Grcic _______________________________________________ Users mailing list [email protected] http://openlayers.org/mailman/listinfo/users
