Cuando hago zoom o muevo el mapa, mi capa se vuelve a dibujar. Esto es lo que quiero, porque tengo muchas características para cargar a la vez. Este es el código:
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)
});
El siguiente código es mi código de selección. Todo esto funciona como yo quiero. Sin embargo, cuando la capa se vuelve a dibujar, la selección se pierde y onFeatureUnselect no se dispara (lo que debería). No estoy seguro de si la selección realmente se pierde o si el estilo se restablece.
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
Mis funciones onFeatureSelect y 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
fuente
fuente
Respuestas:
He encontrado que la forma más fácil de mantener las selecciones de vectores a través del zoom, la panorámica y los redibujos es agregar una nueva capa de vectores vacía a su mapa, y cuando se seleccionan las características, coloque una copia en esta capa.
Puede configurar el estilo de capa de selección para que sea un estilo claramente visible.
En las funciones de resaltado de la herramienta de selección, agregue un clon de la función al seleccionar y elimínelo cuando se seleccione por segunda vez.
Esto está un poco simplificado (y no probado): probablemente desee almacenar la capa de selección como una propiedad de su herramienta de selección.
Compruebe también la función getFeatureById: puede que tenga que usar una propiedad única diferente en su función en lugar de la ID.
fuente
De mis experimentos ( http://ian01.geog.psu.edu/geoserver/www/wfs/wfs-sld2.html ) parece que la selección y el estilo deberían mantenerse sobre un zoom.
fuente