Noté que ya ha encontrado una solución que funciona para usted, pero pensé que podría agregar algunas opciones adicionales que usted u otros puedan encontrar útiles.
En GeoServer hay una capacidad conocida como Virtual OWS Services . Los servicios WMS, WFS y WCS se conocen colectivamente como servicios OWS. Cuando realiza una solicitud a uno de estos servicios, realiza una solicitud global, por lo que todas las capas registradas se devuelven en el documento de capacidades (a menos que tenga configuraciones de seguridad de datos). Por el contrario, un servicio virtual es una vista filtrada del servicio global. El filtrado se realiza en espacios de trabajo y se accede a través de una URL ligeramente diferente.
Tomemos un ejemplo. Suponga que tiene un espacio de trabajo llamado myws y es este espacio de trabajo para el que desea enumerar las capas. En ese caso, puede hacer una solicitud a la URL:
http://www.yourgeoserver.com/geoserver/myws/ows?SERVICE=WFS&REQUEST=GetCapabilities
El documento de capacidades devuelto solo enumerará las capas registradas en el espacio de trabajo myws .
Ese es un enfoque, sin embargo, originalmente había preguntado sobre el acceso a la lista de capas a través de JavaScript. Afortunadamente, hay una manera de hacerlo utilizando la API REST de GeoServer. Puede obtener una lista de tipos de características para un espacio de trabajo y un almacén de datos determinados usando algo como:
http://www.yourgeoserver.com/geoserver/rest/workspaces/myws/featuretypes.json
Esto le devolverá un objeto JSON que enumera todos los tipos de características dentro del espacio de trabajo, también puede sustituir .json por .xml o .html para obtener la respuesta en esos formatos. Entonces, ¿cómo hacer esto en OpenLayers? Afortunadamente, OpenLayers proporciona una encapsulación del objeto XMLHttpRequest en forma de OpenLayers.Request
objeto. Un ejemplo simple usando la URL REST anterior sería:
var request = OpenLayers.Request.GET({
url: "http://www.yourgeoserver.com/geoserver/rest/workspaces/myws/featuretypes.json",
callback: function(request) {
// Code here to handle the response, the request object contains the data
}
});
Hay un buen documento de solicitud de datos remotos con OpenLayers aquí .
Espero que le brinde otros enfoques para considerar.