귀하에게 적합한 솔루션을 이미 찾았지만 귀하 또는 다른 사람들이 유용하게 사용할 수있는 추가 옵션을 추가 할 수 있다고 생각했습니다.
GeoServer에는 Virtual OWS Services 라는 기능이 있습니다 . WMS, WFS 및 WCS 서비스를 통칭하여 OWS 서비스라고합니다. 이러한 서비스 중 하나에 요청하면 전역 요청을 수행하므로 데이터 보안 설정이없는 한 등록 된 모든 레이어가 기능 문서에 반환됩니다. 반대로 가상 서비스는 글로벌 서비스의 필터링 된보기입니다. 필터링은 작업 공간에서 수행되며 약간 다른 URL을 통해 액세스됩니다.
예를 들어 봅시다. myws 라는 작업 공간이 있고이 작업 공간이 레이어를 나열 하려고 한다고 가정하십시오 . 이 경우 URL을 요청할 수 있습니다.
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 개체를 반환합니다 featuretypes 작업 공간 내를, 당신은 또한 .XML에 대한 .json 대체 또는 해당 형식의 응답을 얻기 위해 .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로 원격 데이터를 요청하는 것에 대한 좋은 문서가 여기 있습니다 .
그것이 당신에게 고려해야 할 다른 접근법을 제공하기를 바랍니다.