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];
}
openlayers-2
Boedy
quelle
quelle
Antworten:
Ich habe festgestellt, dass der einfachste Weg, die Vektorauswahl beim Zoomen, Schwenken und Neuzeichnen beizubehalten, darin besteht, Ihrer Karte eine neue leere Vektorebene hinzuzufügen. Wenn Features ausgewählt sind, platzieren Sie eine Kopie in dieser Ebene.
Sie können den ausgewählten Ebenenstil als deutlich sichtbaren Stil festlegen.
Fügen Sie in den Hervorhebungsfunktionen Ihres Auswahlwerkzeugs bei der Auswahl einen Klon des Features hinzu und entfernen Sie ihn, wenn es ein zweites Mal ausgewählt wird.
Dies ist leicht vereinfacht (und nicht getestet). Möglicherweise möchten Sie die Auswahlebene als Eigenschaft Ihres Auswahlwerkzeugs speichern.
Überprüfen Sie auch die Funktion getFeatureById. Möglicherweise müssen Sie für Ihre Funktion eine andere eindeutige Eigenschaft als die ID verwenden.
quelle
Aus meinen Experimenten ( http://ian01.geog.psu.edu/geoserver/www/wfs/wfs-sld2.html ) geht hervor, dass Auswahl und Stil über einen Zoom beibehalten werden sollten.
quelle