Thanks guys

Yes I'd consider this a bug as it defeats the point of using 
OpenLayers.Protocol.WFS.fromWMSLayer doesn't it? Anyway besides easier to 
maintain there is no reason I have to use OpenLayers.Protocol.WFS.fromWMSLayer 
so I'll just create the protocol explicitly. 

Thanks guys!

charles

On Jan 25, 2011, at 1:56 PM, Andreas Hocevar wrote:

> Hi,
> 
> your findings are correct. The feature prefix is lost because it will only be 
> used if a featureNS is specified, which Protocol.WFS.fromWMSLayer does not 
> know. this happens in Format.WFST.v1_1_0, lines 124-130:
> 
> var node = this.createElementNSPlus("wfs:Query", {
>    attributes: {
>        typeName: (options.featureNS ? options.featurePrefix + ":" : "") +
>            options.featureType,
>        srsName: options.srsName
>    }
> });
> 
> This can be considered a bug in OpenLayers. But you can always create your 
> protocol without using Protocol.WFS.fromWMSLayer and specify a featureNS. 
> Then you don't need a featurePrefix at all.
> 
> Regards,
> Andreas.
> 
> On Jan 25, 2011, at 16:30 , Charles Galpin wrote:
> 
>> Does anyone have any idea what the problem is here? 
>> OpenLayers.Protocol.WFS.fromWMSLayer is supposed to pickup the properties 
>> from the WMS layer but is losing the feature prefix in the typeName sent. 
>> 
>> <wfs:query typeName="links" >
>> 
>> When It should be
>> 
>> <wfs:query typeName="myNS:links" >
>> 
>> I have stepped through the constructor and the protocol seems to have the 
>> feature prefix ten. I have tried setting the featurePrefix and typeName a 
>> variety of ways but nothing seems to take.
>> 
>> Can anyone at least confirm this works for them when using a non-default 
>> namespace on the server?
>> 
>> thanks,
>> charles
>> 
>> 
>> On Jan 24, 2011, at 11:15 AM, Charles Galpin wrote:
>> 
>>> I have a GetFeature control that is constructed with a protocol created 
>>> from an existing WMS layer which is working fine. However where getfeature 
>>> requests are being sent the feature namespace is not sent, i.e. 'links' is 
>>> sent instead of 'myNS:links'. This has been working I think because of my 
>>> default namespace in geoserver, but I now want to use another namespace 
>>> that is not the default, and I can see the default namespace in the 
>>> response (which is not correct). I have tried setting featureNS parameters 
>>> to both these constructors but it still doesn't get passed through.
>>> 
>>> Does anyone know how to do this?
>>> 
>>> var links = new OpenLayers.Layer.WMS(
>>>              "Links", "/geoserver/wms",
>>>              {
>>>                  layers: 'myNS:links',
>>>                  styles: '',
>>>                  srs: 'EPSG:4326',
>>>                  format: 'image/png',
>>>                  tiled: 'true',
>>>                  tilesOrigin : map.maxExtent.left + ',' + 
>>> map.maxExtent.bottom,
>>>                  transparent: true
>>>              },
>>>              {
>>>                  visibility: false,
>>>                  buffer: 0,
>>>                  'opacity': 0.75, 
>>>                  'isBaseLayer': false, 
>>>                  'wrapDateLine': true
>>>              } 
>>>          );
>>> 
>>> var getFeatureControl = new OpenLayers.Control.GetFeature({
>>>             // The request is sending coordinates in EPSG:900913
>>>             protocol: OpenLayers.Protocol.WFS.fromWMSLayer(links, {srsName: 
>>> "EPSG:900913"}),
>>>              box: true,
>>>              hover: true,
>>>              multipleKey: "shiftKey",
>>>              toggleKey: "ctrlKey"
>>>          });
>>> 
>>> thanks,
>>> charles
>> 
>> _______________________________________________
>> Users mailing list
>> [email protected]
>> http://lists.osgeo.org/mailman/listinfo/openlayers-users
> 
> 
> 
> -- 
> Andreas Hocevar
> OpenGeo - http://opengeo.org/
> Expert service straight from the developers.
> 

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

Reply via email to