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

geomajor56
источник
Можете ли вы обновить вопрос, чтобы предоставить ссылку на "документы"? Вы также можете объяснить конкретный источник вашей установки 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);
}

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

geomajor56
источник
Это если только для 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