GeoServer 2.3 comment activer jsonp

15

Je voudrais activer jsonp sur GeoServer 2.3.0. Les documents indiquent de définir ENABLE_JSONP sur true.

Une réponse de la liste des utilisateurs de GeoServer dit de modifier web.xml, (définissez la variable système ENABLE_JSONP = true et outFormat = text / javascript) mais je n'ai aucune idée des balises xml à utiliser et où les mettre.

Voici les versions installées: GeoServer 2.3.0 (Web Archive) a été installé sur un hôte distant avec tomcat 7.0.39

geomajor56
la source
Pouvez-vous mettre à jour la question pour fournir un lien vers les "documents"? Vous pouvez également expliquer la source spécifique de votre installation GeoServer (par exemple à partir de la source, des packages de distribution, de certains installateurs Windows, etc.).
BradHards
Les ressources disponibles ne montrent pas clairement que cela doit être fait. Voici le doco atm: docs.geoserver.org/latest/en/user/services/wfs/…
user1567453

Réponses:

33

J'ai obtenu de l'aide sur la liste des utilisateurs de GeoServer.

Ajoutez à ce fichier: /tomcat/webapps/geoserver/WEB-INF/web.xml

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

et redémarrez le service. Ensuite, dans votre demande json, utilisez format = text / javascript

Voici le code que j'ai utilisé pour demander les fonctionnalités WFS à GeoServer. J'utilise l' API Leaflet avec 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);
}

J'espère que cela vous aidera à démarrer et n'hésitez pas à demander plus d'informations.

geomajor56
la source
Cela si pour WMS uniquement? Sinon, pouvez-vous fournir un exemple de point de terminaison? J'essaie d'utiliser JSONP pour un service WFS mais je ne peux pas le faire fonctionner (Impossible de trouver la réponse pour le format de sortie jsonp): 127.0.0.1.18080
geoserver
1
@ ca0v cela ne fonctionne que pour WFS. WMS ne renvoie pas jsonp, AFAIK.
Alex Leith
Apparemment, selon osgeo-org.atlassian.net/browse/… , la définition du paramètre de contexte ne fonctionnait pas dans Geoserver 2.3.0. J'ai perdu une demi-journée à chasser ça. J'ai vraiment besoin de faire fonctionner un Geoserver à jour ...
Auspex
3

Afin d'améliorer la lisibilité, vous pouvez également mettre les paramètres directement dans l'appel AJAX.

Avec l'appel JSONP, vous n'aurez pas besoin du format_options ou du paramètre success. La fonction de rappel sera définie avec le paramètre jsonpCallback sur l'appel AJAX et les format_options seront définis avec 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'
        });
    },
Dennis Bauszus
la source
Bel exemple mais je ne l'ai pas repris immédiatement. Les documents indiquent que vous pouvez modifier le nom du rappel via la chaîne de requête "format_options" en utilisant les options "rappel". Cet exemple modifie le rappel par défaut en "tests": [path_to_wfs_service]? Format_options = callback: test
ca0v