私はあなたがあなたのために働く解決策をすでに見つけたことに気づきましたが、私はあなたや他の人が役に立つと思うかもしれないいくつかの追加のオプションを追加するかもしれないと思いました。
GeoServerには、仮想OWSサービスと呼ばれる機能があります。WMS、WFS、およびWCSサービスは、総称してOWSサービスと呼ばれます。これらのサービスの1つにリクエストを行うと、グローバルリクエストが行われるため、登録されているすべてのレイヤーが機能ドキュメントに返されます(データセキュリティ設定がない場合)。対照的に、仮想サービスはグローバルサービスのフィルターされたビューです。フィルタリングはワークスペースで行われ、わずかに異なるURLを介してアクセスされます。
例を見てみましょう。mywsというワークスペースがあり、レイヤーを一覧表示するのがこのワークスペースであるとします。その場合、次のURLにリクエストを送信できます。
http://www.yourgeoserver.com/geoserver/myws/ows?SERVICE=WFS&REQUEST=GetCapabilities
返されるケーパビリティドキュメントには、mywsワークスペースに対して登録されたレイヤーのみがリストされます。
これは1つのアプローチですが、JavaScriptを使用してレイヤーリストにアクセスすることについて最初に尋ねました。幸い、GeoServer REST APIを使用してこれを行う方法があります。次のようなものを使用して、特定のワークスペースとデータストアの機能タイプのリストを取得できます。
http://www.yourgeoserver.com/geoserver/rest/workspaces/myws/featuretypes.json
これにより、ワークスペース内のすべてのfeaturetypesをリストするJSONオブジェクトが返されます。.xmlまたは.htmlを.jsonに置き換えて、これらの形式で応答を取得することもできます。では、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 でリモートデータをリクエストする方法については、こちらのドキュメントをご覧ください。
あなたが検討するいくつかの他のアプローチを与えることを願っています。