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


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.


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

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
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.