Когда я увеличиваю или перемещаю карту, мой слой перерисовывается. Это то, что я хочу, потому что у меня есть множество функций для загрузки сразу. Это код:
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)
});
Следующий код - мой код выбора. Это все работает, как я не хочу. Однако, когда слой перерисовывается, выделение теряется, и onFeatureUnselect не запускается (что и должно быть). Я не уверен, что выбор действительно потерян или стиль сброшен.
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
Мои функции onFeatureSelect и 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
источник
источник
Ответы:
Я обнаружил, что самый простой способ сохранить выделение вектора при масштабировании, панорамировании и перерисовке - это добавить новый пустой векторный слой на карту, а когда объекты выбраны, поместить копию в этот слой.
Вы можете установить стиль выбранного слоя, чтобы он был четко видимым.
В функции выделения инструмента выделения выберите клон объекта при выборе и удалите его при повторном выборе.
Это немного упрощено (и не проверено) - вы, вероятно, захотите сохранить слой выбора как свойство вашего инструмента выбора.
Также проверьте функцию getFeatureById - возможно, вам придется использовать другое уникальное свойство для вашей функции, а не ID.
источник
Из моих экспериментов ( http://ian01.geog.psu.edu/geoserver/www/wfs/wfs-sld2.html ) кажется, что выбор и стиль должны поддерживаться при увеличении.
источник