我注意到您已经找到了适合您的解决方案,但我想我可能会添加一些您或其他人认为有用的其他选项。
在GeoServer中,有一种称为虚拟OWS服务的功能。WMS,WFS和WCS服务统称为OWS服务。当您向这些服务之一发出请求时,您正在发出全局请求,因此所有注册的层都将返回到功能文档中(除非您具有数据安全性设置)。相反,虚拟服务是全局服务的过滤视图。过滤是在工作空间上完成的,并且可以通过稍微不同的URL进行访问。
让我们举个例子。假设您有一个名为myws的工作空间,并且您想为其列出图层。在这种情况下,您可以向网址发出请求:
http://www.yourgeoserver.com/geoserver/myws/ows?SERVICE=WFS&REQUEST=GetCapabilities
返回的功能文档将仅列出在myws工作空间中注册的图层。
那是一种方法,但是您最初曾问过有关通过JavaScript访问层列表的问题。幸运的是,有一种方法可以使用GeoServer REST API来完成。您可以使用以下方法获取给定工作空间和数据存储区的要素类型列表:
http://www.yourgeoserver.com/geoserver/rest/workspaces/myws/featuretypes.json
这将返回一个列出工作空间中所有要素类型的JSON对象,您也可以将.json替换为.xml或.html以获得这些格式的响应。那么,如何在OpenLayers中做到这一点?幸运的是,OpenLayers以对象的形式提供了XMLHttpRequest对象的封装OpenLayers.Request
。使用上面的REST URL的一个简单示例是:
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
}
});
有关于请求远程数据具有的OpenLayers好的文件在这里。
希望能给您其他一些考虑的方法。