GeoServer 2.3 wie man jsonp aktiviert


14

Ich möchte jsonp auf GeoServer 2.3.0 aktivieren. Die Dokumentation sagt, dass ENABLE_JSONP auf true gesetzt werden soll.

In einer Antwort der GeoServer-Benutzerliste heißt es, die Datei web.xml zu bearbeiten (Systemvariable ENABLE_JSONP = true und outFormat = text / javascript), aber ich habe keine Ahnung, welche XML-Tags verwendet und wo sie abgelegt werden sollen.

Hier sind die installierten Versionen: GeoServer 2.3.0 (Web Archive) wurde auf einem Remote-Host mit Tomcat 7.0.39 installiert


Können Sie die Frage aktualisieren, um einen Link zu den "Dokumenten" bereitzustellen? Möglicherweise möchten Sie auch die spezifische Quelle Ihrer GeoServer-Installation erläutern (z. B. von Quelle, Distributionspaketen, einigen Windows-Installationsprogrammen usw.).
BradHards

In den Ressourcen wird nicht deutlich, dass dies getan werden muss. Hier ist die doco atm: docs.geoserver.org/latest/en/user/services/wfs/…
user1567453

Antworten:


32

Ich habe Hilfe in der GeoServer Benutzerliste.

Fügen Sie dieser Datei Folgendes hinzu: /tomcat/webapps/geoserver/WEB-INF/web.xml

<context-param>
    <param-name>ENABLE_JSONP</param-name>
    <param-value>true</param-value>
</context-param>

und starten Sie den Dienst neu. Verwenden Sie dann in Ihrer json-Anfrage format = text / javascript

Hier ist der Code, mit dem ich die WFS-Funktionen von GeoServer angefordert habe. Ich verwende die Leaflet-API zusammen mit jquery.

var rootUrl = 'http://tomcat.capecodgis.com/geoserver/capecodgis/ows';

var defaultParameters = {
    service: 'WFS',
    version: '1.0.0',
    request: 'GetFeature',
    typeName: 'capecodgis:monitor_station',
    maxFeatures: 200,
    outputFormat: 'text/javascript',
    format_options: 'callback: getJson'

};

var parameters = L.Util.extend(defaultParameters);

$.ajax({
    url: rootUrl + L.Util.getParamString(parameters),
    dataType: 'jsonp',
    jsonpCallback: 'getJson',
    success: handleJson
});


function handleJson(data) {
    L.geoJson(data, {
        onEachFeature: onEachFeature,
        pointToLayer: function (feature, latlng) {
            return L.circleMarker(latlng, geojsonMarkerOptions);
            //return L.marker(latlng);
        }
    }).addTo(map);
}

Hoffen Sie, dass Sie damit anfangen und fragen Sie nach weiteren Informationen.


Dies ist nur für WMS? Wenn nicht, können Sie einen Beispielendpunkt bereitstellen? Ich versuche, JSONP für einen WFS-Dienst zu verwenden, kann ihn jedoch nicht zum Laufen bringen (Antwort für Ausgabeformat jsonp konnte nicht gefunden werden): 127.0.0.1:8080/geoserver/…
ca0v

1
@ ca0v Dies funktioniert nur für WFS. WMS gibt jsonp nicht zurück, AFAIK.
Alex Leith

Offenbar gemäß osgeo-org.atlassian.net/browse/... tat das Kontextparameter, Einstellung nicht Arbeit in Geoserver 2.3.0. Ich habe einen halben Tag damit verbracht, dem nachzujagen. Ich muss unbedingt einen aktuellen Geoserver zum Laufen bringen ...
Auspex

3

Um die Lesbarkeit zu verbessern, können Sie die Parameter auch direkt in den AJAX-Aufruf einfügen.

Mit dem JSONP-Aufruf benötigen Sie weder die format_options noch den success-Parameter. Die Rückruffunktion wird beim AJAX-Aufruf mit dem Parameter jsonpCallback und die format_options mit jsonp: 'format_options' gesetzt.

    $.ajax('http://demo.opengeo.org/geoserver/wfs',{
        type: 'GET',
        data: {
            service: 'WFS',
            version: '1.0.0',
            request: 'GetFeature',
            typeName: 'capecodgis:monitor_station',
            maxFeatures: 200,
            outputFormat: 'text/javascript',
            request: 'GetFeature',
            srsname: 'EPSG:3857',
            bbox: extent.join(',') + ',EPSG:3857'
            },
        dataType: 'jsonp',
        jsonpCallback:'callback:handleJson',
        jsonp:'format_options'
        });
    },

Nettes Beispiel, aber ich habe es nicht sofort verstanden. In den Dokumenten wird angegeben, dass Sie den Rückrufnamen über die Abfragezeichenfolge "format_options" mit den Optionen "Rückruf" ändern können. In diesem Beispiel wird der Standardrückruf in "tests" geändert: [path_to_wfs_service]? Format_options = callback: test
ca0v
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.