GeoServer 2.3 как включить jsonp


15

Я хотел бы включить jsonp на GeoServer 2.3.0. В документах сказано, что для ENABLE_JSONP задано значение true.

В ответе из списка пользователей GeoServer говорится, что нужно отредактировать файл web.xml (установите системную переменную ENABLE_JSONP = true и outFormat = text / javascript), но я понятия не имею, какие теги xml использовать и где их разместить.

Вот установленные версии: GeoServer 2.3.0 (веб-архив) был установлен на удаленном хосте с tomcat 7.0.39


Можете ли вы обновить вопрос, чтобы предоставить ссылку на "документы"? Вы также можете объяснить конкретный источник вашей установки GeoServer (например, из исходного кода, пакетов дистрибутивов, некоторых установщиков Windows и т. Д.).
BradHards

В ресурсах не указано, что это нужно делать. Вот DOCO атм: docs.geoserver.org/latest/en/user/services/wfs/...
user1567453

Ответы:


33

Я получил некоторую помощь в списке пользователей GeoServer.

Добавить в этот файл: /tomcat/webapps/geoserver/WEB-INF/web.xml

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

и перезапустите сервис. Затем в вашем запросе json используйте format = text / javascript

Вот код, который я использовал для запроса функций WFS у GeoServer. Я использую Leaflet API вместе с 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);
}

Надеюсь, что это поможет вам начать и не стесняйтесь спрашивать дополнительную информацию.


Это если только для WMS? Если нет, можете ли вы привести пример конечной точки? Я пытаюсь использовать JSONP для службы WFS, но не могу заставить ее работать (Не удалось найти ответ для выходного формата jsonp): 127.0.0.1:8080/geoserver/…
ca0v

1
@ ca0v это работает только для WFS. WMS не возвращает JSONP, AFAIK.
Алекс Лейт

По-видимому, согласно osgeo-org.atlassian.net/browse/… , настройка параметра context не работала в Geoserver 2.3.0. Я потратил впустую полдня, гоняясь за этим. Мне действительно нужно, чтобы обновленный Geoserver работал ...
Auspex

3

Для улучшения читабельности вы также можете поместить параметры непосредственно в вызов AJAX.

При вызове JSONP вам не понадобятся format_options или параметр успеха. Функция обратного вызова будет установлена ​​с параметром jsonpCallback при вызове AJAX, а параметры format_options будут установлены с помощью 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'
        });
    },

Хороший пример, но я не сразу понял это. Документы утверждают, что вы можете изменить имя обратного вызова через строку запроса «format_options», используя параметры «обратного вызова». В этом примере изменяется обратный вызов по умолчанию на «tests»: [path_to_wfs_service]? Format_options = callback: test
ca0v
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.