GeoServer 2.3, як увімкнути jsonp


16

Я б хотів включити jsonp на GeoServer 2.3.0. У документах кажуть , щоб встановити ENABLE_JSONP істину.

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

Тут встановлені версії: GeoServer 2.3.0 (веб-архів) встановлений на віддаленому хості з tomcat 7.0.39


Чи можете ви оновити питання, щоб надати посилання на "документи"? Ви також можете пояснити конкретне джерело встановлення GeoServer (наприклад, з джерела, пакетів дистрибутива, деякого інсталятора Windows тощо).
BradHards

У ресурсах там не стає очевидним, що це потрібно зробити. Ось doco
користувач1567453

Відповіді:


34

Я отримав допомогу у списку користувачів GeoServer.

Додати в цей файл: /tomcat/webapps/geoserver/WEB-INF/web.xml

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

та перезапустіть службу. Потім у своєму запиті json використовуйте формат = text / javascript

Ось код, який я використав для запиту функцій WFS від GeoServer. Я використовую API Leaflet разом із 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/… , встановлення контекстного параметра не працювало в Geoserver 2.3.0. Я витрачав півдня на те, щоб переслідувати це. Мені справді потрібно запустити
сучасний Geoserver, який

3

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

При дзвінку JSONP вам не знадобляться формат_опції або параметр успіху. Функція зворотного дзвінка буде встановлена ​​за допомогою параметра jsonpCallback під час виклику AJAX, а формат_опції буде встановлено за допомогою 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", використовуючи параметри "зворотного виклику". Цей приклад змінює зворотний виклик за замовчуванням на "тести": [path_to_wfs_service]? Format_options = callback: test
ca0v
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.