刷新后不考虑我的Vector层协议中动态更改的URL

时间:2014-08-23 16:36:48

标签: javascript openlayers

我有一张地图,当用户点击一个单选按钮时,我会尝试动态更改其网址。

这是我的代码:

var refreshLayer = new OpenLayers.Strategy.Refresh({ force: true, active: true });
var fromProjection = new OpenLayers.Projection("EPSG:4326");
var toProjection = new OpenLayers.Projection("EPSG:3857");
var vectorProtocol = new OpenLayers.Protocol.HTTP({
        url: '/getmaindata',
        format: new OpenLayers.Format.GeoJSON({
            'internalProjection': fromProjection,
            'externalProjection': toProjection
        }),
        params: {
            "naf": "04"
        }
    });
var map = new OpenLayers.Map("map_element");
var vectorStrategies = [new OpenLayers.Strategy.Fixed(), refreshLayer];
var osmLayer = new OpenLayers.Layer.OSM();
var vectorLayer = new OpenLayers.Layer.Vector('vector_layer', {
   protocol: vectorProtocol,
   strategies: vectorStrategies
});

map.addLayers([osmLayer, vectorLayer]);

(...)

// $radio is my radiobutton
$radio.onclick = function() {
      vectorProtocol.url = "/getouterdata";
      refreshLayer.refresh({force: true});
});

当我使用Firebug进行调试时,我注意到我的图层协议对象中的url已正确更改。但是,所谓的是前一个url(/ getmaindata)而不是新的(/ getouterdata)。 所以我问自己是否有什么我做错了。什么时候新的网址被叫?是通过调用我的Strategy.Refresh的refresh()方法吗?或者别的地方 ?也许旧网址被缓存了?

1 个答案:

答案 0 :(得分:0)

问题解决:'url'位于vectorProtocol

的'options'字段中
$radio.onclick = function() {
      vectorProtocol.options.url = "/getouterdata";
      refreshLayer.refresh({force: true});
});