GeoServer 2.3 cách bật jsonp


14

Tôi muốn bật jsonp trên GeoServer 2.3.0. Các tài liệu nói để đặt ENABLE_JSONP thành đúng.

Một phản hồi từ danh sách người dùng GeoServer cho biết để chỉnh sửa web.xml, (đặt biến hệ thống ENABLE_JSONP = true và outFormat = text / javascript) nhưng tôi không biết nên sử dụng thẻ xml nào và đặt nó ở đâu.

Dưới đây là các phiên bản đã cài đặt: GeoServer 2.3.0 (Lưu trữ web) đã được cài đặt trên máy chủ từ xa với tomcat 7.0.39


Bạn có thể cập nhật câu hỏi để cung cấp một liên kết đến "tài liệu" không? Bạn cũng có thể muốn giải thích nguồn cụ thể của cài đặt GeoServer của mình (ví dụ: từ nguồn, gói distro, một số trình cài đặt windows, v.v.).
BradHards

Không rõ ràng trong các nguồn lực ngoài kia rằng điều này cần phải được thực hiện. Đây là tài liệu atm: docs.geoserver.org/latest/en/user/service/wfs/ mẹo
user1567453

Câu trả lời:


32

Tôi đã nhận được một số trợ giúp trong danh sách người dùng GeoServer.

Thêm vào tệp này: /tomcat/webapps/geoserver/weB-INF/web.xml

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

và khởi động lại dịch vụ. Sau đó, trong yêu cầu json của bạn sử dụng format = text / javascript

Đây là mã tôi đã sử dụng để yêu cầu các tính năng WFS từ GeoServer. Tôi đang sử dụng API Tờ rơi cùng với 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);
}

Hy vọng điều này sẽ giúp bạn bắt đầu và cảm thấy thoải mái để hỏi thêm thông tin.


Điều này nếu chỉ cho WMS? Nếu không, bạn có thể cung cấp một điểm cuối ví dụ? Tôi đang cố gắng sử dụng JSONP cho một dịch vụ WFS nhưng không thể có được nó làm việc (Không thể tìm thấy câu trả lời cho định dạng đầu ra jsonp): 127.0.0.1:8080/geoserver/...
ca0v

1
@ ca0v này chỉ hoạt động cho WFS. WMS không trả lại jsonp, AFAIK.
Alex Leith

Rõ ràng, theo osgeo-org.atlassian.net/browse/ , việc thiết lập tham số ngữ cảnh không hoạt động trong Geoserver 2.3.0. Tôi đã lãng phí nửa ngày để theo đuổi nó. Tôi thực sự cần phải có một Geoserver cập nhật đang chạy ...
Auspex

3

Để cải thiện khả năng đọc, bạn cũng có thể đặt tham số trực tiếp vào cuộc gọi AJAX.

Với cuộc gọi JSONP, bạn sẽ không cần format_options hoặc tham số thành công. Hàm gọi lại sẽ được đặt với tham số jsonpCallback trên lệnh gọi AJAX và format_options sẽ được đặt với 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'
        });
    },

Ví dụ đẹp nhưng tôi đã không nhận nó ngay lập tức. Các tài liệu nói rằng bạn có thể thay đổi tên gọi lại thông qua chuỗi truy vấn "format_options" bằng cách sử dụng các tùy chọn "gọi lại". Ví dụ này thay đổi cuộc gọi lại mặc định thành "tests": [path_to_wfs_service]? Format_options = callback: test
ca0v
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.