【发布时间】:2012-03-19 10:20:06
【问题描述】:
我需要的是一种无需再次下载数据即可修改矢量图层表示的方法。 我已经定义了一个 GLM 矢量图层和一个名为 build_style 的函数来根据某些特征为它们的几何图形着色。我有一个 HTML 表单,它调用以这种方式定义的函数 UpdateGlmLayer:
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 函数吗?
-
您使用的是什么版本的 OpenLayers?您能否使用 Fiddler / FireBug 网络工具检查该图层是否确实第二次从服务器请求。
-
ops...对不起...我忘记了 UpdateGlmLayer 函数中的一行...现在它是正确的。我添加了 glm.redraw();最后...
标签: javascript gis openlayers