Что мне нужно - это способ изменить представление векторного слоя без повторной загрузки данных. Я определил векторный слой GLM и функцию build_style, чтобы раскрасить их геометрию в соответствии с некоторой особенностью. У меня есть форма HTML, которая вызывает функцию UpdateGlmLayer, которая определяется таким образом: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
Какой выпуск OpenLayers вы используете? Можете ли вы проверить с помощью сетевых инструментов Fiddler/FireBug, что слой действительно запрашивается у сервера во второй раз. – AlexC
ops ... Прошу прощения ... Я забыл одну строку в функции UpdateGlmLayer ... теперь это правильно. Я добавил glm.redraw(); в конце ... – manuele