Wenn ich die Karte zoome oder verschiebe, wird meine Ebene neu gezeichnet. Dies ist, was ich will, weil ich viele Funktionen gleichzeitig laden muss. Dies ist der Code:
wfs = new OpenLayers.Layer.Vector("WFS", {
strategies: [new OpenLayers.Strategy.BBOX({
resFactor: 1,
ratio:1
})],
protocol: new OpenLayers.Protocol.WFS({
maxFeatures:1000,
url: myUrl,
featureType: myFeatureType,
featureNS: myFeaturedNS,
version: "1.1.0"
}),
filter: setFilter(year, variant)
});
Der folgende Code ist mein Auswahlcode. Das alles funktioniert so, wie ich es nicht will. Wenn die Ebene jedoch neu gezeichnet wird, geht die Auswahl verloren und die Funktion onFeatureUnselect wird nicht ausgelöst (was auch immer der Fall sein sollte). Ich bin nicht sicher, ob die Auswahl wirklich verloren geht oder ob der Stil zurückgesetzt wird.
selectCtrl = new OpenLayers.Control.SelectFeature(
wfs,
{
clickout: true, toggle: false,
multiple: false, hover: false,
box: true,
toggleKey: "shiftKey", // ctrl key removes from selection
multipleKey: "shiftKey",
eventListeners: {
featurehighlighted: onFeatureSelect,
featureunhighlighted: onFeatureUnselect
}
}
);
@geographika
Meine Funktionen onFeatureSelect und onFeatureUnselect:
function onFeatureSelect(e) {
var feature = e.feature.attributes;
var featureclone = e.feature.clone();
var style = {
pointRadius: 10,
fillOpacity:0,
strokeColor: "#000000"
};
featureclone.style = style;
layer2.addFeatures([featureclone]);
selectedFeatures[featureclone.attributes.receptor_id] = featureclone;
}
function onFeatureUnselect(e) {
var feature = e.feature.attributes;
layer2.removeFeatures(selectedFeatures[feature.receptor_id]);
delete selectedFeatures[feature.receptor_id];
}