1

我将 OL 2.11 与 GeoExt 1.1 一起使用。在测试和修改此 GeoExt 示例:http ://geoext.org/lib/GeoExt/widgets/form/FormPanel.html 后,我在销毁和读取新协议时遇到问题,我收到“TypeError: this.options is null HTTP.js(第 180 行)”在 firebug 中。我从第 180 行了解到的是新选项(在新协议中)不存在,不确定这是否是问题以及如何解决。这是原始协议(在 FormPanel 之外创建):

protocol = new OpenLayers.Protocol.HTTP({
    url: '/fs/',
    format: new OpenLayers.Format.GeoJSON({
        ignoreExtraDims: true,
        'internalProjection': new OpenLayers.Projection('EPSG:900913'),
        'externalProjection': new OpenLayers.Projection('EPSG:4326')
    })
});

这是创建新协议的 FormPanel 末尾的代码:

    buttons: [{
        text: 'Search',
        handler: function() {

            comboLayer = Ext.getCmp('idcombo').getValue();
            keyword = Ext.getCmp('idtextfield').getRawValue();

            protocol.destroy();

            protocol = new OpenLayers.Protocol.HTTP({
                url: '/fs/' + comboLayer + '?format=GeoJSON&comments__ilike=' + keyword + '&queryable=comments',
                format: new OpenLayers.Format.GeoJSON({
                    ignoreExtraDims: true,
                    'internalProjection': new OpenLayers.Projection('EPSG:900913'),
                    'externalProjection': new OpenLayers.Projection('EPSG:4326')
                })
            });

            protocol.read();

            formPanel.search();
        }
    }]

在我删除“protocol.destroy();”的情况下,原始协议和新协议都被发送,但总是在新协议之后发送原始协议,这是因为请求是 AJAX 吗?原件之后可以寄新的吗?

我会感谢一些支持,在此先感谢,

4

1 回答 1

0

解决方案是只使用“protocol.options.url = newUrl;” 而不是protocol.destroy();或者protocol.read();,完整的解释在这里

于 2013-02-14T16:17:31.050 回答