GeoServer 2.3 como habilitar o jsonp

15

Gostaria de ativar o jsonp no GeoServer 2.3.0. Os documentos dizem para definir ENABLE_JSONP como true.

Uma resposta da lista de usuários do GeoServer diz para editar web.xml, (defina a variável de sistema ENABLE_JSONP = true e outFormat = text / javascript), mas não tenho idéia de quais tags xml usar e onde colocá-las.

Aqui estão as versões instaladas: O GeoServer 2.3.0 (Web Archive) foi instalado em um host remoto com o tomcat 7.0.39

geomajor56
fonte
Você pode atualizar a pergunta para fornecer um link para os "documentos"? Você também pode explicar a fonte específica da sua instalação do GeoServer (por exemplo, da fonte, pacotes de distribuição, algum instalador do Windows, etc.).
BradHards
Não é óbvio nos recursos por aí que isso precisa ser feito. Aqui está o doco atm: docs.geoserver.org/latest/en/user/services/wfs/...
user1567453

Respostas:

33

Eu recebi alguma ajuda na lista de usuários do GeoServer.

Adicione a este arquivo: /tomcat/webapps/geoserver/WEB-INF/web.xml

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

e reinicie o serviço. Em sua solicitação json, use format = text / javascript

Aqui está o código que eu usei para solicitar os recursos WFS do GeoServer. Estou usando a API do Leaflet junto com o 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);
}

Esperamos que isso comece e fique à vontade para solicitar mais informações.

geomajor56
fonte
Isso se for apenas para WMS? Caso contrário, você pode fornecer um exemplo de terminal? Eu estou tentando usar JSONP para um serviço WFS, mas não pode fazê-lo funcionar (Falha de encontrar resposta para o formato de saída jsonp): 127.0.0.1:8080/geoserver/...
ca0v
1
@ ca0v isso funciona apenas para WFS. O WMS não retorna jsonp, AFAIK.
Alex Leith
Aparentemente, de acordo com osgeo-org.atlassian.net/browse/… , a configuração do parâmetro context não funcionou no Geoserver 2.3.0. Eu perdi meio dia perseguindo isso. Eu realmente preciso para obter uma data de up-to-Geoserver correndo ...
Auspex
3

Para melhorar a legibilidade, você também pode colocar os parâmetros diretamente na chamada AJAX.

Com a chamada JSONP, você não precisará das format_options ou do parâmetro success. A função de retorno de chamada será definida com o parâmetro jsonpCallback na chamada AJAX e as opções de formato serão definidas com 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
fonte
Belo exemplo, mas não o compreendi imediatamente. Os documentos afirmam que você pode alterar o nome do retorno de chamada por meio da sequência de consultas "format_options" usando as opções "retorno de chamada". Este exemplo altera o retorno de chamada padrão para "testes": [path_to_wfs_service]? Format_options = callback: test
ca0v