[OpenLayers-Users] OL 2.10 - Vector layer will not render
Alexandre Dube
adube at mapgears.com
Wed Jun 8 11:47:42 EDT 2011
Hi,
This seems to be a matter of feature namespace. In OpenLayers, XML
is read using the namespaces of a node as the way to detect the
according reader for it. If not set in the protocol, OpenLayers sets
"feature" as default prefix for feature nodes. In MapServer, the
default value outputed in the GML is "ms" as you can see in yours. You
can either adjust OpenLayers to your MapServer settings [1] or the
opposite [2] in order to read the nodes accordingly.
[1] set feature prefix and namespace in your protocol (OpenLayers)
according to MapServer settings
protocol: new OpenLayers.Protocol.WFS({
url: mapPath,
featureType: "tenszones",
featurePrefix: "ms",
featureNS: "http://mapserver.gis.umn.edu/mapserver"
}),
[2] or set your feature namespace to OpenLayers default value in your
mapfile (in your MAP, METADATA tag):
"wfs_namespace_prefix" "feature"
"wfs_namespace_uri" "http://localhost"
Before making any changes, you could use firebug with an uncompressed
version of OpenLayers (2.10) and set a breakpoint in
./lib/OpenLayers/Format/XML.js on line 621 :
var group = this.readers[node.namespaceURI ?
this.namespaceAlias[node.namespaceURI]: this.defaultPrefix];
Inspect the elements there until you reach your node that doesn't get
read properly and you'll see why it isn't and how it works as well.
HTH,
Alexandre
On 11-06-08 11:12 AM, Mark K. Zanfardino wrote:
> OpenLayers version 2.10
> MapServer version 5.6.6
>
> Goal: Render vector layer based on WFS protocol
>
> I'm trying to understand why a vector layer will not render on my map.
> I can clearly see the layer in the layerSwitcher control so I presume
> the layer is being presented, but there are no actual features rendered.
>
> The vector layer is defined using a WFS protocol:
>
> tens = new OpenLayers.Layer.Vector("TENS",
> {
> strategies: [new OpenLayers.Strategy.BBOX()],
> protocol: new OpenLayers.Protocol.WFS({
> url: mapPath,
> featureType: "tenszones",
> }),
> styleMap: new OpenLayers.StyleMap({
> strokeWidth: 3,
> strokeColor: "#333333"
> }),
> filter: new OpenLayers.Filter.Logical({
> type: OpenLayers.Filter.Logical.NOT,
> filters: [
> new OpenLayers.Filter.Comparison({
> type: OpenLayers.Filter.Comparison.EQUAL_TO,
> property: "name",
> value: "County0"
> })
> ]
> })
> },
> {
> isBaseLayer: false,
> buffer: 0
> }
> );
>
> When I watch the page load I can clearly see the XML results from the
> WFS call (see XML output) but no features are rendered on the map. I'm
> following from the 'WFS Protocol and Filter' example. Any help would
> be appreciated.
>
> <?xml version='1.0' encoding="ISO-8859-1" ?>
> <wfs:FeatureCollection
> xmlns:ms="http://mapserver.gis.umn.edu/mapserver"
> xmlns:wfs="http://www.opengis.net/wfs"
> xmlns:gml="http://www.opengis.net/gml"
> xmlns:ogc="http://www.opengis.net/ogc"
> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
> xsi:schemaLocation="http://www.opengis.net/wfs
> http://schemas.opengis.net/wfs/1.0.0/WFS-basic.xsd
> http://mapserver.gis.umn.edu/mapserver
> http://localhost/cgi-bin/mapserv?map=/home/mark/htdocs/sandbox/contra_costa/mapdata/cws.map&SERVICE=WFS&VERSION=1.0.0&REQUEST=DescribeFeatureType&TYPENAME=tenszones&OUTPUTFORMAT=XMLSCHEMA">
> <gml:boundedBy>
> <gml:Box srsName="EPSG:4326">
> <gml:coordinates>-122.430673,37.902872
> -121.783758,38.058186</gml:coordinates>
> </gml:Box>
> </gml:boundedBy>
> <gml:featureMember>
> <ms:tenszones fid="tenszones.2">
> <gml:boundedBy>
> <gml:Box srsName="EPSG:4326">
> <gml:coordinates>-121.882119,38.004151
> -121.822493,38.034986</gml:coordinates>
> </gml:Box>
> </gml:boundedBy>
> <ms:msGeometry>
> <gml:Polygon srsName="EPSG:4326">
> <gml:outerBoundaryIs>
> <gml:LinearRing>
> <gml:coordinates>-121.826546,38.024671 -121.825545,38.018151
> -121.822493,38.015989 -121.832033,38.004151 -121.847393,38.007365
> -121.876296,38.018261 -121.875579,38.022347 -121.882119,38.024341
> -121.880209,38.032456 -121.878309,38.034986 -121.826546,38.024671
> </gml:coordinates>
> </gml:LinearRing>
> </gml:outerBoundaryIs>
> </gml:Polygon>
> </ms:msGeometry>
> <ms:gid>2</ms:gid>
> <ms:area>0.00104289122555201</ms:area>
> <ms:perimeter>0.147388060113902</ms:perimeter>
> <ms:name>DOW0</ms:name>
> </ms:tenszones>
> </gml:featureMember>
> <gml:featureMember>
> <ms:tenszones fid="tenszones.3">
> <gml:boundedBy>
> <gml:Box srsName="EPSG:4326">
> <gml:coordinates>-121.837932,37.999340
> -121.819430,38.024672</gml:coordinates>
> </gml:Box>
> </gml:boundedBy>
> <ms:msGeometry>
> <gml:Polygon srsName="EPSG:4326">
> <gml:outerBoundaryIs>
> <gml:LinearRing>
> <gml:coordinates>-121.826535,38.024672 -121.819800,38.022000
> -121.819430,38.004870 -121.821310,37.999340 -121.837932,38.003598
> -121.836350,38.005070 -121.832027,38.004150 -121.822495,38.015991
> -121.825510,38.018100 -121.826535,38.024672 </gml:coordinates>
> </gml:LinearRing>
> </gml:outerBoundaryIs>
> </gml:Polygon>
> </ms:msGeometry>
> <ms:gid>3</ms:gid>
> <ms:area>0.000183226789886248</ms:area>
> <ms:perimeter>0.0794914873797834</ms:perimeter>
> <ms:name>DOW1</ms:name>
> </ms:tenszones>
> </gml:featureMember>
> </wfs:FeatureCollection>
>
>
> _______________________________________________
> Users mailing list
> Users at lists.osgeo.org
> http://lists.osgeo.org/mailman/listinfo/openlayers-users
--
Alexandre Dubé
Mapgears
www.mapgears.com
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.osgeo.org/pipermail/openlayers-users/attachments/20110608/14f2ee56/attachment.html
More information about the Users
mailing list