필요한 것은 데이터를 다시 다운로드하지 않고 벡터 레이어 표현을 수정하는 것입니다. GLM 벡터 레이어와 build_style이라는 함수를 정의하여 일부 지형지 물에 따라 지오메트리의 색상을 채색했습니다. GLM 층이 이런 식으로 정의된다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();
};
:
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은 색상이 즉시 변경하는 것 트리거 나는이 방식으로 정의되는 함수의 UpdateGlmLayer를 호출하는 HTML 양식이 그 후 시스템은 초기 페이지로드시 데이터를 다운로드하는 데 걸리는 시간과 거의 동시에 멈 춥니 다. 이 시간 동안 아무 것도 할 수 없습니다. 뭔가 잘못 됐니?
당신은 당신의 build_style 기능을 공유 할 수 있을까요? – drnextgis
사용중인 OpenLayers의 릴리스는 무엇입니까? Fiddler/FireBug 네트 도구를 사용하여 레이어가 실제로 서버에서 두 번째로 요청되고 있는지 확인할 수 있습니까? – AlexC
작전 ... 당신의 용서를 구합니다 ... 나는 UpdateGlmLayer 함수에서 한 줄을 잊어 버렸습니다 ... 지금은 맞습니다. glm.redraw()를 추가했습니다. 끝에 ... – manuele