在我的矢量层协议中动态更改了url,刷新后不考虑
Dynamically changed url in my Vector layer protocol not taken into account after refresh
我有一个地图,当用户点击一个单选按钮时,我试图动态地改变它的url。
下面是我的代码: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),而不是新的url (/getouterdata)。所以我问自己是不是做错了什么。什么时候调用新url ?是通过调用我的策略的refresh()方法。刷新吗?还是去别的地方?
问题解决:'url'位于vectorProtocol的'options'字段
$radio.onclick = function() {
vectorProtocol.options.url = "/getouterdata";
refreshLayer.refresh({force: true});
});
相关文章:
- 刷新后重定向到其他URL
- window.location未刷新到现有URL
- 在浏览器中更改页面的URL,无需刷新和HTML5模式
- Angular/UI路由器-如何在不刷新所有内容的情况下更新URL
- Angular,ui路由器;绑定”;到url,也不刷新
- 如何在不刷新页面的情况下更改URL
- dojo-dgrid带有store from url(json数据)重载/刷新按钮
- 更新f5上的URL或刷新按钮
- 在url中传递参数时,如何使用AJAX阻止页面刷新
- PHP-如何让别人可以'不要更改url中的参数,也不要在刷新页面时再次运行脚本
- 用javascript附加主url,刷新页面无效
- 如果可能的话,刷新后保留iframe url
- 剑道自动完成刷新url
- 对于特定的URL,每5秒刷新一次表
- 用javascript交换url后刷新类似facebook的按钮不起作用
- 使用jQuery修改url参数而不刷新页面
- 单击具有实际 URL 的链接时刷新
- 角度 UI 路由器嵌套视图 使用或刷新直接 URL 时不会加载页面
- 如何使用 url 哈希在刷新后加载特定页面
- 任何想法如何重定向一个页面到登录页面时,基于它的url刷新