GeoServer 2.3 cara mengaktifkan jsonp

15

Saya ingin mengaktifkan jsonp di GeoServer 2.3.0. The docs mengatakan untuk mengatur ENABLE_JSONP ke true.

Respons dari daftar pengguna GeoServer mengatakan untuk mengedit web.xml, (set variabel Sistem ENABLE_JSONP = true dan outFormat = teks / javascript) tapi saya tidak tahu tag xml mana yang harus digunakan dan di mana harus meletakkannya.

Berikut adalah versi yang diinstal: GeoServer 2.3.0 (Web Archive) telah diinstal pada host jarak jauh dengan tomcat 7.0.39

geomajor56
sumber
Bisakah Anda memperbarui pertanyaan untuk memberikan tautan ke "dokumen"? Anda mungkin juga ingin menjelaskan sumber spesifik instalasi GeoServer Anda (mis. Dari sumber, paket distro, beberapa pemasang windows, dll.).
BradHards
Tidak dijelaskan dalam sumber daya di luar sana bahwa ini perlu dilakukan. Berikut adalah dokumennya
user1567453

Jawaban:

33

Saya mendapat bantuan pada daftar pengguna GeoServer.

Tambahkan ke file ini: /tomcat/webapps/geoserver/WEB-INF/web.xml

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

dan mulai kembali layanan. Kemudian, dalam permintaan json Anda gunakan format = teks / javascript

Berikut kode yang saya gunakan untuk meminta fitur WFS dari GeoServer. Saya menggunakan Leaflet API bersama dengan 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);
}

Berharap ini membuat Anda memulai dan merasa bebas untuk meminta info lebih lanjut.

geomajor56
sumber
Apakah ini untuk WMS saja? Jika tidak, dapatkah Anda memberikan contoh titik akhir? Saya mencoba menggunakan JSONP untuk layanan WFS tetapi tidak dapat membuatnya berfungsi (Gagal menemukan respons untuk format output jsonp): 127.0.0.1:8080/geoserver/…
ca0v
1
@ ca0v ini hanya berfungsi untuk WFS. WMS tidak mengembalikan jsonp, AFAIK.
Alex Leith
Rupanya, menurut osgeo-org.atlassian.net/browse/… , pengaturan parameter konteks tidak berfungsi di Geoserver 2.3.0. Saya sudah membuang setengah hari mengejar itu. Saya benar-benar perlu menjalankan Geoserver terbaru ...
Auspex
3

Untuk meningkatkan keterbacaan Anda juga dapat menempatkan params langsung ke panggilan AJAX.

Dengan panggilan JSONP Anda tidak perlu format_options atau parameter keberhasilan. Fungsi panggilan balik akan diatur dengan parameter jsonpCallback pada panggilan AJAX dan format_options akan diatur dengan 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'
        });
    },
Dennis Bauszus
sumber
Contoh yang bagus tapi saya tidak langsung mengambilnya. Dokumen menyatakan bahwa Anda dapat mengubah nama panggilan balik melalui string kueri "format_options" menggunakan opsi "panggilan balik". Contoh ini mengubah panggilan balik default ke "tes": [path_to_wfs_service]? Format_options = callback: test
ca0v