Ich stelle fest, dass Sie bereits eine Lösung gefunden haben, die für Sie funktioniert, aber ich dachte, ich könnte einige zusätzliche Optionen hinzufügen, die Sie oder andere möglicherweise nützlich finden.
In GeoServer gibt es eine Funktion, die als Virtual OWS Services bezeichnet wird . Die WMS-, WFS- und WCS-Dienste werden zusammen als OWS-Dienste bezeichnet. Wenn Sie eine Anfrage an einen dieser Dienste stellen, stellen Sie eine globale Anfrage, sodass alle registrierten Ebenen im Funktionsdokument zurückgegeben werden (es sei denn, Sie haben Datensicherheitseinstellungen). Im Gegensatz dazu ist ein virtueller Dienst eine gefilterte Ansicht des globalen Dienstes. Die Filterung erfolgt in Arbeitsbereichen und wird über eine etwas andere URL aufgerufen.
Nehmen wir ein Beispiel. Angenommen, Sie haben einen Arbeitsbereich namens myws und für diesen Arbeitsbereich möchten Sie Ebenen auflisten . In diesem Fall können Sie eine Anfrage an die URL stellen:
http://www.yourgeoserver.com/geoserver/myws/ows?SERVICE=WFS&REQUEST=GetCapabilities
Das zurückgegebene Funktionsdokument listet nur die Ebenen auf, die im myws- Arbeitsbereich registriert sind .
Dies ist ein Ansatz, den Sie jedoch ursprünglich nach dem Zugriff auf die Ebenenliste über JavaScript gefragt hatten. Glücklicherweise gibt es eine Möglichkeit, dies mithilfe der GeoServer REST-API zu tun. Sie können eine Liste von bekommen Feature für einen bestimmten Arbeitsbereich und Datenspeicher mit so etwas wie:
http://www.yourgeoserver.com/geoserver/rest/workspaces/myws/featuretypes.json
Dadurch erhalten Sie ein JSON-Objekt, in dem alle Merkmalstypen im Arbeitsbereich aufgelistet sind. Sie können auch .json durch .xml oder .html ersetzen, um die Antwort in diesen Formaten zu erhalten. Wie geht das in OpenLayers? Glücklicherweise bietet OpenLayers eine Kapselung des XMLHttpRequest-Objekts in Form eines OpenLayers.Request
Objekts. Ein einfaches Beispiel für die Verwendung der obigen REST-URL wäre:
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
}
});
Es ist ein gutes Dokument Remote - Daten mit Openlayers auf anfordernden hier .
Ich hoffe, das gibt Ihnen einige andere Ansätze zu berücksichtigen.