Script protocol looks awfully close to what I want. At the moment, I do 
queries on an WFS layer by first creating a protocol object, viz
                  wfsProtocol = new OpenLayers.Protocol.WFS.v1_1_0({
                          url: myWFSurl
                          geometryName: "SHAPE",
                          featurePrefix: myfeaturePrefix,
                          featureType: myfeatureType,
                          srsName: "EPSG:900913"
                  });
I then do queries by:
                          wfsProtocol.read({
                             filter: myFilter,
                             callback: processWFSQuery,
                             scope: strategy
                          });

Of course, this uses ajax and runs into cross-domain issues if I am say 
running the html off a memory stick instead of server.

It appears I could instead do something:
             protocol: new OpenLayers.Protocol.Script({
                 url: myWFSurl,
                 callbackKey: "format_options",
                 callbackPrefix: "callback:",
                 params: {
                     service: "WFS",
                     version: "1.1.0",
                     srsName: "EPSG:900913",
                     request: "GetFeature",
                     geometryName: "SHAPE",
                     featurePrefix: myfeaturePrefix,
                     featureType: myfeatureType,
                     outputFormat: "json"
                 },
             })
or should featureType be typeName???

Presumably, I can read specifying my callback, just the the wfsprotocol, 
however, it gets more interesting with the filter. The filters I use are 
a mixed bunch. Mostly spatial like:
                             filter: new OpenLayers.Filter.Spatial({
                                     type: 
OpenLayers.Filter.Spatial.INTERSECTS,
                                     value: e.feature.geometry
                             }),
or
                                      filter: new 
OpenLayers.Filter.Spatial({
                                                                       
type: OpenLayers.Filter.Spatial.DWITHIN,
                                                                       
distance: map.getExtent().getHeight() / 10000000,
                                                                       
distanceUnits: "degree",
                                                                       
value: e.feature.geometry
                                                               }),
  but also text filters created with logical OR
                                         filter: new 
OpenLayers.Filter.Logical({
                                                 type: 
OpenLayers.Filter.Logical.OR,
                                                 filters: filters
                                         }),

I'm a little lost as to how the filtertoParams is supposed to work to 
serialise all these. Any tips really appreciated.

Thanks

Notice: This email and any attachments are confidential. If received in error 
please destroy and immediately notify us. Do not copy or disclose the contents.

_______________________________________________
Users mailing list
[email protected]
http://lists.osgeo.org/mailman/listinfo/openlayers-users

Reply via email to