GeoServer 2.3如何启用jsonp


15

我想在GeoServer 2.3.0上启用jsonp。该文档说ENABLE_JSONP设置为true。

来自GeoServer用户列表的响应说要编辑web.xml(设置系统变量ENABLE_JSONP = true和outFormat = text / javascript),但我不知道要使用哪个xml标记以及将其放置在何处。

以下是已安装的版本:Geoserver 2.3.0(Web Archive)已安装在具有tomcat 7.0.39的远程主机上


您可以更新问题以提供指向“文档”的链接吗?您可能还想解释一下GeoServer安装的特定来源(例如,来自来源,发行版软件包,某些Windows安装程序等)。
BradHards

在需要的资源中并没有明显表明需要这样做。这是doco atm:docs.geoserver.org/latest/en/user/services/wfs/…– user1567453 2015
6

Answers:


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

这是我用来向GeoServer请求WFS功能的代码。我正在将 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);
}

希望这可以帮助您入门,并随时询问更多信息。


这是否仅用于WMS?如果没有,您能否提供示例端点?我正在尝试将JSONP用于WFS服务,但无法使其正常工作(未能找到输出格式jsonp的响应): 127.0.0.1
8080/geoserver/…

1
@ ca0v仅适用于WFS。WMS不返回jsonp,AFAIK。
Alex Leith

显然,根据osgeo-org.atlassian.net/browse/...,设置环境参数确实没有工作,利用Geoserver 2.3.0。我浪费了半天时间来追逐它。我真的需要运行最新的Geoserver ...
Auspex

3

为了提高可读性,您还可以将参数直接放入AJAX调用中。

通过JSONP调用,您将不需要format_options或success参数。回调函数将在AJAX调用中使用jsonpCallback参数设置,而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'
        });
    },

很好的例子,但我没有立即了解。docs声明您可以使用“ callback”选项通过“ format_options”查询字符串来更改回调名称。此示例将默认回调更改为“测试”:[path_to_wfs_service]?format_options = callback:test
ca0v
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.