Tôi nhận thấy bạn đã tìm thấy một giải pháp phù hợp với bạn, nhưng tôi nghĩ rằng tôi có thể thêm một số tùy chọn bổ sung mà bạn hoặc những người khác có thể thấy hữu ích.
Trong GeoServer có một khả năng được gọi là Dịch vụ OWS ảo . Các dịch vụ WMS, WFS và WCS được gọi chung là các dịch vụ OWS. Khi bạn thực hiện một yêu cầu đối với một trong những dịch vụ này, bạn đang thực hiện một yêu cầu toàn cầu, vì vậy tất cả các lớp đã đăng ký sẽ được trả về trong tài liệu khả năng (trừ khi bạn có cài đặt bảo mật dữ liệu). Ngược lại, một dịch vụ ảo là một cái nhìn được lọc của dịch vụ toàn cầu. Việc lọc được thực hiện trên các không gian làm việc và được truy cập thông qua một url hơi khác.
Hãy lấy một ví dụ. Giả sử bạn có một không gian làm việc được gọi là myws và đó là không gian làm việc mà bạn muốn liệt kê các lớp. Trong trường hợp đó, bạn có thể yêu cầu url:
http://www.yourgeoserver.com/geoserver/myws/ows?SERVICE=WFS&REQUEST=GetCapabilities
Tài liệu về các khả năng được trả về sẽ chỉ liệt kê các lớp được đăng ký theo không gian làm việc của myws .
Đó là một cách tiếp cận, tuy nhiên ban đầu bạn đã hỏi về việc truy cập danh sách lớp thông qua JavaScript. Hạnh phúc là có một cách để làm điều này bằng API REST của GeoServer. Bạn có thể nhận được một danh sách các featuretypes cho một không gian làm việc và kho dữ liệu nhất định bằng cách sử dụng một cái gì đó như:
http://www.yourgeoserver.com/geoserver/rest/workspaces/myws/featuretypes.json
Điều này sẽ trả về cho bạn một đối tượng JSON liệt kê tất cả các featuretypes trong không gian làm việc, bạn cũng có thể thay thế .json cho .xml hoặc .html để nhận phản hồi theo các định dạng đó. Vậy, làm thế nào để làm điều này trong OpenLayers? May mắn thay, OpenLayers cung cấp một gói gọn của đối tượng XMLHttpRequest ở dạng OpenLayers.Requestđối tượng. Một ví dụ đơn giản sử dụng url REST ở trên sẽ là:
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
}
});
Có một tài liệu tốt về yêu cầu dữ liệu từ xa với OpenLayers tại đây .
Hy vọng rằng cung cấp cho bạn một số phương pháp khác để xem xét.