GeoServer 2.3 cómo habilitar jsonp

15

Me gustaría habilitar jsonp en GeoServer 2.3.0. Los documentos dicen establecer ENABLE_JSONP en verdadero.

Una respuesta de la lista de usuarios de GeoServer dice que edite web.xml (establezca la variable del sistema ENABLE_JSONP = true y outFormat = text / javascript) pero no tengo idea de qué etiquetas xml usar y dónde colocarlas.

Aquí están las versiones instaladas: GeoServer 2.3.0 (Web Archive) se ha instalado en un host remoto con tomcat 7.0.39

geomajor56
fuente
¿Puedes actualizar la pregunta para proporcionar un enlace a los "documentos"? También puede explicar la fuente específica de su instalación de GeoServer (por ejemplo, desde la fuente, paquetes de distribución, algunos instaladores de Windows, etc.).
BradHards
No se hace obvio en los recursos disponibles que esto deba hacerse. Aquí está el doco atm: docs.geoserver.org/latest/en/user/services/wfs/…
user1567453

Respuestas:

33

Obtuve ayuda en la lista de usuarios de GeoServer.

Añadir a este archivo: /tomcat/webapps/geoserver/WEB-INF/web.xml

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

y reinicie el servicio. Luego, en su solicitud json use format = text / javascript

Aquí está el código que usé para solicitar las características WFS de GeoServer. Estoy usando la API de folleto junto con 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);
}

Espero que esto te ayude a comenzar y no dudes en pedir más información.

geomajor56
fuente
¿Esto es solo para WMS? Si no, ¿puede proporcionar un punto final de ejemplo? Estoy tratando de usar JSONP para un servicio WFS pero no puedo hacer que funcione (Error al encontrar la respuesta para el formato de salida jsonp): 127.0.0.1:8080/geoserver/…
ca0v
1
@ ca0v esto funciona solo para WFS. WMS no devuelve jsonp, AFAIK.
Alex Leith
Aparentemente, de acuerdo con osgeo-org.atlassian.net/browse/… , establecer el parámetro de contexto no funcionó en Geoserver 2.3.0. He perdido medio día persiguiendo eso. Realmente necesito tener un Geoserver actualizado funcionando ...
Auspex
3

Para mejorar la legibilidad, también puede poner los parámetros directamente en la llamada AJAX.

Con la llamada JSONP no necesitará las opciones de formato o el parámetro de éxito. La función de devolución de llamada se establecerá con el parámetro jsonpCallback en la llamada AJAX y las opciones de formato se establecerán 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'
        });
    },
Dennis Bauszus
fuente
Buen ejemplo, pero no lo entendí de inmediato. Los documentos indican que puede cambiar el nombre de devolución de llamada a través de la cadena de consulta "format_options" utilizando las opciones de "devolución de llamada". Este ejemplo cambia la devolución de llamada predeterminada a "pruebas": [path_to_wfs_service]? Format_options = callback: test
ca0v