私に必要なのは、ベクターレイヤーの表現をデータを再度ダウンロードせずに変更する方法です。 私は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層は、このように定義されていますUpdateGlmLayerがトリガされると
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
});
色はすぐに変更するように見えますその後、システムは、最初のページの読み込み時にデータをダウンロードするのとほぼ同じ時間停止します。この間は何もできません。何か間違っていますか?
あなたbuild_style機能を共有してもらえますか? – drnextgis
あなたはOpenLayersのどのリリースを使用していますか? Fiddler/FireBugネットツールを使用して、レイヤーが実際にサーバーから2回目に要求されていることを確認できますか? – AlexC
ops ...私はあなたの恩赦を請う...私はUpdateGlmLayer関数で1行を忘れました...今は正しいです。 glm.redraw()を追加しました。最後に... – manuele