我想重绘一个OpenLayers向量。
我的html按钮:
<button id="refresh" type="button">Refresh</button>
和我的jquery函数重绘图层,刷新函数中的parksLayer记录为false:
function refresh() {
parksLayer.redraw(true);
}
function bind(){
$("#refresh").bind("click", refresh);
}
和我的地图,我想重新绘制ParksLayer:
map = new OpenLayers.Map({
div: "map",
layers: [
new OpenLayers.Layer.OSM(),
parksLayer
]
});
更新
感谢您的帮助,我的矢量图层定义如下:
function changeme(avalue){
parksLayer = new OpenLayers.Layer.Vector("Parks", {
projection: new OpenLayers.Projection("EPSG:4326"),
strategies: [new OpenLayers.Strategy.Fixed()],
protocol: new OpenLayers.Protocol.Script({
url: "http://my.cartodb.com/api/v2/sql",
params: {
q: "SELECT * FROM activities where type_code is not null"+" "+avalue,
format: "geojson"
},
format: new OpenLayers.Format.GeoJSON({
ignoreExtraDims: true
}),
callbackKey: "callback"
}),
});
}
我有一个动态更改avalue
的表单会更改GeoJSON查询,因此,如果我可以重新绘制parksLayer,我将从图层中选择一个新选项。
答案 0 :(得分:3)
如果我阅读Openlayers API,重绘功能不使用任何参数......您应该尝试调用redraw()而不将“true”作为参数...
Openlayers API: 重绘:function() 重绘图层。如果重绘图层,则返回true,否则返回false。
此致
艾蒂安
答案 1 :(得分:3)
我也有redraw()的问题并使用它。
VecLayer.redraw(true);
VecLayer.refresh({force: true});
答案 2 :(得分:1)
这是一个KML格式,但它很容易适应,你可以看到
var refresh = new OpenLayers.Strategy.Refresh({force: true, active: true});
var protocol = new OpenLayers.Protocol.HTTP({
url: "http://my_data.source.com",
format: new OpenLayers.Format.KML({
extractStyles: false,
extractAttributes: true
})
});
mylayer = new OpenLayers.Layer.Vector("MyLayerName", {
strategies: [new OpenLayers.Strategy.Fixed(), refresh],
protocol: protocol
});
然后重绘/重新下载您执行的操作:
refresh.refresh();