GeoServer 2.3 come abilitare jsonp


15

Vorrei abilitare jsonp su GeoServer 2.3.0. I documenti dicono di impostare ENABLE_JSONP su true.

Una risposta dall'elenco degli utenti di GeoServer dice di modificare web.xml, (imposta la variabile di sistema ENABLE_JSONP = true e outFormat = text / javascript) ma non ho idea di quali tag xml usare e dove metterlo.

Ecco le versioni installate: GeoServer 2.3.0 (Web Archive) è stato installato su un host remoto con Tomcat 7.0.39


Puoi aggiornare la domanda per fornire un link ai "documenti"? Potresti anche spiegare l'origine specifica dell'installazione di GeoServer (ad es. Da sorgenti, pacchetti di distribuzione, alcuni programmi di installazione di Windows, ecc.).
BradHards,

Non è ovvio nelle risorse là fuori che questo deve essere fatto. Ecco il doco atm: docs.geoserver.org/latest/en/user/services/wfs/…
user1567453

Risposte:


33

Ho avuto qualche aiuto nella lista degli utenti di GeoServer.

Aggiungi a questo file: /tomcat/webapps/geoserver/WEB-INF/web.xml

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

e riavviare il servizio. Quindi, nella tua richiesta json usa format = text / javascript

Ecco il codice che ho usato per richiedere le funzionalità WFS da GeoServer. Sto usando l' API Leaflet insieme a 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);
}

Spero che questo ti inizi e sentiti libero di chiedere maggiori informazioni.


Questo se solo per WMS? In caso contrario, è possibile fornire un endpoint di esempio? Sto cercando di utilizzare JSONP per un servizio WFS ma non riesco a farlo funzionare (Impossibile trovare la risposta per il formato di output jsonp): 127.0.0.1:8080/geoserver/…
ca0v

1
@ ca0v funziona solo per WFS. WMS non restituisce jsonp, AFAIK.
Alex Leith,

Apparentemente, secondo osgeo-org.atlassian.net/browse/… , l'impostazione del parametro di contesto non ha funzionato in Geoserver 2.3.0. Ho perso mezza giornata a inseguirlo. Ho davvero bisogno di un Geoserver aggiornato in esecuzione ...
Auspex,

3

Per migliorare la leggibilità puoi anche inserire i parametri direttamente nella chiamata AJAX.

Con la chiamata JSONP non avrai bisogno del format_options o del parametro success. La funzione di callback verrà impostata con il parametro jsonpCallback sulla chiamata AJAX e il format_options verrà impostato con jsonp: 'format_options'.

    $.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'
        });
    },

Bell'esempio, ma non ho capito subito. I documenti affermano che è possibile modificare il nome del callback tramite la stringa di query "format_options" utilizzando le opzioni "callback". In questo esempio il callback predefinito viene modificato in "test": [path_to_wfs_service]? Format_options = callback: test
ca0v
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.