Khi tôi phóng to hoặc di chuyển bản đồ, lớp của tôi được vẽ lại. Đây là những gì tôi muốn, bởi vì tôi có phân bổ các tính năng để tải cùng một lúc. Đây là mã:
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)
});
Mã sau đây là mã lựa chọn của tôi. Tất cả điều này hoạt động như tôi sẽ không. Tuy nhiên, khi lớp được vẽ lại, vùng chọn bị mất và onFeatureUnselect không được kích hoạt (mà nó nên). Tôi không chắc liệu lựa chọn có thực sự bị mất hoặc phong cách được đặt lại.
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
Các hàm onFeatureSelect và onFeatureUnselect của tôi:
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];
}