我需要的是一種在不下載數據的情況下修改矢量圖表示的方法。 我已經定義了一個GLM矢量圖層和一個名爲build_style的函數,以根據某些特徵對它們的幾何進行着色。我有一個調用它以這種方式定義的函數UpdateGlmLayer HTML表單:openlayers:重繪矢量圖層而不再次下載數據
function UpdateGlmLayer(info_str) {
var v = info_str.split("|");
var filter_column = v[0];
var values = [parseFloat(v[1]), parseFloat(v[2]), parseFloat(v[3])];
glm.styleMap = build_style(filter_column, values);
glm.redraw();
};
的GLM層以這種方式定義:
gml_protocol = new OpenLayers.Protocol.HTTP({
url: "http://localhost:8080/geoserver/ows?service=WFS&version=1.0.0&request=GetFeature&typeName="+info["layer_featurePrefix"]+":"+info["layer_featureType"],
format: new OpenLayers.Format.GML()
})
glm = new OpenLayers.Layer.Vector(info["layer_name"], {
strategies: [new OpenLayers.Strategy.BBOX({ratio: 3, resFactor: 1})],
protocol: gml_protocol,
styleMap: build_style(info["filter_property"], info["filter_values"]),
srsName: info["layer_srsName"],
projection: new OpenLayers.Projection("EPSG:4326"),
visibility: true
});
當UpdateGlmLayer被觸發的顏色似乎馬上改變但在此之後,系統停止大約與在初始頁面加載時下載數據所用的時間相同。在這段時間內什麼都不能做。有什麼不對?
你能分享你的build_style功能? – drnextgis 2012-03-19 10:27:25
您使用的是什麼版本的OpenLayers?你能檢查使用Fiddler/FireBug網絡工具,該層確實是第二次從服務器請求。 – AlexC 2012-03-19 12:06:57
ops ...我請你原諒...我在UpdateGlmLayer函數中忘了一行...現在它是正確的。我已經添加了glm.redraw();最後... – manuele 2012-03-19 13:52:13