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

geomajor56
quelle
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.

geomajor56
quelle
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'
        });
    },
Dennis Bauszus
quelle
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