Paul, Looked at your site and I do not really understand why you would want to use a WFS layer to zoom in on an adres. I would simply:
1. create a filter based on the input of the user. 2. create WFS protocol 3. add a callback on the WFS callback and zoom to the extend of the returned features. But that is just my 2 euro cents. Ivo On Mon, Jul 2, 2012 at 9:53 PM, Paul Meems <[email protected]> wrote: > Hi Milo, > > Thanks for the quick reply. > 1. Yes, GeoServer and PostGIS are on the same server (dedicated server @ > RackSpace) > 2. What is enough RAM? I now have 2GB, with only Ubuntu, GeoServer and > PostGIS > 3. My dataset has 67k features. I can try tomorrow with a smaller dataset. > 4. I'm using FF v13 with FireBug. > 5. I'll also try the empty string as initial filter. > > Here's a live sample: > http://demo.smartdakscan.nl/zonnekaart.php (in Dutch). > > Thanks, > > Paul > > > 2012/7/2 Milo van der Linden <[email protected]> > >> I am doing something similar, but my initial filter is an empty string "" >> that gets set to a valid string later on. I do not use an id, but use the >> filter to limit results to a viewers organizational unit. I have seen over >> a hunderd features displayed in less then a second. The underlying table is >> oracle spatial with less then 10k records. >> >> To dig in deeper: >> 1. Are geoserver and your db on the same machine? >> 2. Do you have enough RAM? >> 3. Did you test smaller datasets which generate the same result and are >> they faster? >> 4. What browser are you using? >> On Jul 2, 2012 9:18 PM, "Paul Meems" <[email protected]> wrote: >> >>> I use GeoServer and PostGIS and OpenLayers to show the data. >>> For one page I'm using a WFS layer and I filter on address. >>> >>> The user first need to select an address. This is done with an AJAX call >>> and the adresID and the location (X, Y) are returned. >>> I zoom to that location and change my filter. >>> This is my initial set-up of my layer, an addressID of -1 doesn't exists >>> so it starts with just the baselayer: >>> >>> var myLayer = new OpenLayers.Layer.Vector("tmp", { >>> displayInLayerSwitcher: true, strategies: [new >>> OpenLayers.Strategy.BBOX()], filter: new OpenLayers.Filter.Comparison({ >>> type: OpenLayers.Filter.Comparison.EQUAL_TO, property: >>> "_adresid", value: "-1"}), styleMap: new OpenLayers.StyleMap(), >>> protocol: new OpenLayers.Protocol.WFS({ url: ".../wfs", featureType: >>> "myName", srsName: "EPSG:3857", geometryName: "geomgoogle" })}); >>> >>> But this call takes long because it tries to find the -1 value. >>> *Q1*: How can I add a WFS layer without data? >>> >>> And this is the method I call after the user selects an address: >>> >>> function changeFilter(newValue, x, y){ myLayer.destroyFeatures(); filter >>> = new OpenLayers.Filter.Logical({ type: OpenLayers.Filter.Logical.AND, >>> filters: [ new OpenLayers.Filter.Comparison({ type: >>> OpenLayers.Filter.Comparison.EQUAL_TO, property: "_adresid", >>> value: newValue }), new OpenLayers.Filter.Spatial({ >>> type: OpenLayers.Filter.Spatial.BBOX, value: new >>> OpenLayers.Bounds(x-50, y-50, x+50, y+50), projection: >>> "EPSG:3857" }) ] }); myLayer.filter = filter; >>> myLayer.refresh({force: true}); >>> showAttributes(); >>> } >>> >>> >>> >>> >>> >>> This is working great, but is does take a very long time: about 7-10 >>> seconds. >>> The result are just a few features: 3-10 >>> >>> Of course I have an index in the database on _adresid and a spatial >>> index. >>> >>> *Q2*: What else can I do to speed up this filter? >>> >>> Thanks, >>> >>> Paul >>> >>> _______________________________________________ >>> Users mailing list >>> [email protected] >>> http://lists.osgeo.org/mailman/listinfo/openlayers-users >>> >>> > > _______________________________________________ > Users mailing list > [email protected] > http://lists.osgeo.org/mailman/listinfo/openlayers-users > >
_______________________________________________ Users mailing list [email protected] http://lists.osgeo.org/mailman/listinfo/openlayers-users
