У меня есть страница, которая отображает квадратные сетки из KML.
введите описание изображения здесь
https://saxrub.net/GeoPortail/500x500m.kml
Пользователь может выбрать/ отмените выбор сетки, выделение осуществляется по цвету сетки.Если он щелкает по красной сетке, она становится зеленой, и наоборот.
KML добавляется с помощью
var KML3 = new ol.layer.Vector ({
source: new ol.source.Vector ({
url: kml_1x1km,
format: new ol.format.KML ({
extractStyles: true,
showPointNames: showPointNames
})
})
});
allLayers.push (KML3);
allLayerSwitcher.push ({
layer: KML3,
config: {
title: kml_1x1km_title,
description: kml_1x1km_title,
}
})
Клик по меткам фиксируется:
var displayFeatureInfo = function (pixel) {
var currentZoom = map.getView (). getZoom ();
var feature = map.forEachFeatureAtPixel (pixel, function (feature, layer) {
return feature;
});
if (feature) {
var f = feature;
var att = feature.getProperties ();
styleUrl = att.styleUrl.split ("#");
mesh=att.description.split = ( "~");
if (styleUrl [1] == "Red_red")
{
att.styleUrl = "# Jaune_Vert";
feature.style = eval (mesh [3]). getStyle ("#Yellow_Green", {})
}
else
{
att.styleUrl = "# Rouge_Rouge";
feature.style = eval (mesh [3]). getStyleFunction ("# Red_Red", {})
` }
eval (mesh [3]) redraw ().
this.unselect (feature);
return 1;
} else {
return 0;
}
};
С OpenLayer 2 API я делал
if (f) {
mesh=f.attributes.description.split = ( "~");
if (f.attributes.styleUrl == "# Red_Red")
{
f.attributes.styleUrl = "# Jaune_Vert";
f.style = eval (mesh [3]). protocol.format.getStyle ("#Yellow_Yellow", {})
}
else
{
f.attributes.styleUrl = "# Rouge_Rouge";
f.style = eval (mesh [3]). protocol.format.getStyle ("# Red_red", {})
}
eval (mesh [3]) redraw ().
this.unselect (f);
}
, но я не могу найти эквивалент функции перерисовки в V4.
Идея?