Estoy tratando de agregar uno de los conjuntos de datos incluidos con GeoServer a un mapa OpenLayers. He seguido los tutoriales de OpenGeo, he visto un hilo similar aquí, pero parece que no puedo descifrarlo. ¿Alguien puede echar un vistazo a mi código y la configuración de GeoServer y decirme dónde me estoy equivocando?
Aquí está mi código:
//WMS map
world = new OpenLayers.Layer.WMS("Global Imagery", "http://maps.opengeo.org/geowebcache/service/wms", {
layers : "openstreetmap",
format : "image/png"
});
map.addLayer(world);
//WFS
parks = new OpenLayers.Layer.Vector("WFS", {
strategies : [new OpenLayers.Strategy.BBOX()],
protocol : new OpenLayers.Protocol.WFS({
url : "http://localhost:8081/geoserver/wfs",
featureType : "medford:parks",
featureNS : "http://medford.opengeo.org/medford"
})
});
map.addLayer(parks);
map.zoomToMaxExtent();
Detalles del GeoServer: nombre del espacio de trabajo = medford, URI del espacio de nombres = http://medford.opengeo.org Para el tipo de característica he intentado "parques" y "medford: parques"
La capa está habilitada, anunciada y tiene un límite de retorno de 30 funciones.
Estoy luchando por armar un mapa simple.
Solución actualizada Trabajando ahora.
wfs = new OpenLayers.Layer.Vector("Fields_WFS", {
strategies : [new OpenLayers.Strategy.Fixed()],
protocol : new OpenLayers.Protocol.WFS({
version : "1.1.0",
url : GEOSERVER_HOST + ":" + GEOSERVER_PORT + "/geoserver/wfs",
featurePrefix : "rpid",
featureType : "FIELDS_SUBSET_BNG_OSGB36_1",
featureNS : "<namespace>",
//geometryName : "GEOM", type "Geometry"
srsName : "EPSG:27700"
}),
renderers : renderer
})
No necesita especificar el nombre de geometría en la definición de capa. Dado que el SRS nativo era nulo en nuestro conjunto de datos, si mantenemos geometryName de lo que toma por defecto, pero sin él, utiliza la proyección del mapa (27700- en nuestro caso).
fuente
workspace
(esto lo llevará a la páginaEdit Workspace
. EstoName
es lo que puso comofeaturePrefix
. YNamespace URI
es lo que puso comofeatureNS
. Además, no estoy seguro de si lafile:///c:
ubicación requerirá que use un proxy. Pero haría el archivo en vivo enhttp://localhost
a prueba y asegurarse.<wfs:FeatureCollection numberOfFeatures="30"...
elemento padre ¿verdad?Lo primero que debe verificar: ¿está su servidor / página web de prueba en 'medford.opengeo.org'? Si no es así, no podrá acceder a WFS debido a la Política del mismo origen . Técnicamente, puede usar un proxy para solucionar esto. (aunque en mi opinión esto es solo un caso de WFS siendo un protocolo mal diseñado)
fuente
Su problema es que tiene el prefijo en el nombre de la función y un espacio de nombres, esto es confuso GeoServer (y / o OpenLayers).
Tratar:
Tengo algunos ejemplos de WFS en http://ian01.geog.psu.edu/geoserver/www/wfs/index.html con código fuente comentado que puedes estudiar.
fuente
simplemente corrija su tipo de característica de "medford: parques" a "parques"
Ver jsfiddle como ejemplo: http://jsfiddle.net/expedio/ucrtthya/
fuente
Tu codigo esta bien. Solo necesita cambiar la dirección del navegador de su página. Dirija la página de su navegador a través de "localhost: 8080 / geoserver / www / your_file_name.html" en lugar de "file: \ c ......"
Entonces la capa vectorial se renderizará perfectamente.
fuente