Ketika saya memperbesar atau memindahkan peta, layer saya digambar ulang. Ini yang saya inginkan, karena saya memiliki banyak fitur untuk dimuat sekaligus. Ini kodenya:
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)
});
Kode berikut adalah kode pilihan saya. Ini semua berfungsi seperti yang saya inginkan. Namun, ketika layer digambar ulang pemilihannya hilang dan onFeatureUnselect tidak diaktifkan (yang seharusnya). Saya tidak yakin apakah pilihannya benar-benar hilang atau gaya tersebut dipasang kembali.
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
Fungsi onFeatureSelect dan onFeatureUnect saya pilih:
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
sumber
sumber
Jawaban:
Saya telah menemukan cara termudah untuk mempertahankan pemilihan vektor di zoom, panning, dan redraws adalah menambahkan layer vektor kosong baru ke peta Anda, dan ketika fitur yang dipilih letakkan salinan di layer ini.
Anda dapat mengatur gaya lapisan pilih menjadi gaya yang terlihat jelas.
Dalam fungsi sorotan alat pilih Anda, tambahkan klon fitur ketika memilih, dan hapus ketika itu dipilih untuk kedua kalinya.
Ini sedikit disederhanakan (dan belum teruji) - Anda mungkin ingin menyimpan lapisan pemilihan sebagai properti alat pilih Anda.
Periksa juga fungsi getFeatureById - Anda mungkin harus menggunakan properti unik yang berbeda pada fitur Anda daripada ID.
sumber
Dari eksperimen saya ( http://ian01.geog.psu.edu/geoserver/www/wfs/wfs-sld2.html ) tampaknya pemilihan dan gaya harus dipertahankan melalui zoom.
sumber