GeoServer 2.3 jak włączyć jsonp

15

Chciałbym włączyć jsonp na GeoServer 2.3.0. W docs powiedzieć ustawić ENABLE_JSONP true.

Odpowiedź z listy użytkowników GeoServer mówi o edycji pliku web.xml (ustaw zmienną systemową ENABLE_JSONP = true i outFormat = text / javascript), ale nie mam pojęcia, których znaczników xml użyć i gdzie je umieścić.

Oto zainstalowane wersje: GeoServer 2.3.0 (Archiwum sieciowe) został zainstalowany na zdalnym hoście z tomcat 7.0.39

geomajor56
źródło
Czy możesz zaktualizować pytanie, podając link do „dokumentów”? Możesz także wyjaśnić konkretne źródło instalacji GeoServera (np. Ze źródła, pakietów dystrybucyjnych, niektórych instalatorów Windows itp.).
BradHards,
W zasobach nie jest oczywiste, że należy to zrobić. Oto bankomat doco: docs.geoserver.org/latest/en/user/services/wfs/…
user1567453

Odpowiedzi:

33

Mam pomoc na liście użytkowników GeoServer.

Dodaj do tego pliku: /tomcat/webapps/geoserver/WEB-INF/web.xml

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

i uruchom ponownie usługę. Następnie w swoim żądaniu json użyj formatu = tekst / javascript

Oto kod, którego użyłem do żądania funkcji WFS od GeoServer. Używam interfejsu API Leaflet wraz z 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);
}

Mam nadzieję, że dzięki temu zaczniesz i możesz poprosić o więcej informacji.

geomajor56
źródło
To jeśli tylko dla WMS? Jeśli nie, czy możesz podać przykładowy punkt końcowy? Próbuję użyć JSONP dla usługi WFS, ale nie mogę go uruchomić (nie udało się znaleźć odpowiedzi dla formatu wyjściowego jsonp): 127.0.0.1:8080/geoserver/...
ca0v
1
@ ca0v to działa tylko dla WFS. WMS nie zwraca jsonp, AFAIK.
Alex Leith,
Najwyraźniej według osgeo-org.atlassian.net/browse/… ustawienie parametru kontekstu nie działało w Geoserver 2.3.0. Zmarnowałem pół dnia, ścigając to. Naprawdę muszę mieć działającego Geoservera ...
Auspex,
3

Aby poprawić czytelność, możesz również umieścić parametry bezpośrednio w wywołaniu AJAX.

Dzięki wywołaniu JSONP nie będziesz potrzebował opcji format_options ani parametru powodzenia. Funkcja wywołania zwrotnego zostanie ustawiona za pomocą parametru jsonpCallback w wywołaniu AJAX, a opcje_formatowania zostaną ustawione za pomocą jsonp: „opcje_format”.

    $.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
źródło
Dobry przykład, ale nie od razu go zrozumiałem. Dokumenty stwierdzają, że można zmienić nazwę wywołania zwrotnego za pomocą ciągu zapytania „format_options” przy użyciu opcji „wywołania zwrotnego”. W tym przykładzie zmieniono domyślne wywołanie zwrotne na „testy”: [path_to_wfs_service]? Format_options = callback: test
ca0v