[OpenLayers-Dev] hidden but selectable features
Andreas Hocevar
ahocevar at opengeo.org
Tue Jan 27 09:57:37 EST 2009
Hi Pierre,
On Tue, Jan 27, 2009 at 3:32 PM, Pierre GIRAUD <bluecarto at gmail.com> wrote:
> Here's a project use case : I have features in a vector layer in a map
> and corresponding rows in an Ext grid. I want some of those features
> to be hidden on the map. However, I want them all to be selectable in
> the grid.
> If a feature is selected in the grid, I want it to be shown as
> selected on the map too, even it is was previously hidden.
>
> In order to achieve this, I took advantage of the styleMap
> uniquevaluerules and a specific lookup omitting the values for the
> hidden features.
>
> It was working well until r8620 [1]. The features are still hidden,
> but selecting them programmatically has no effect.
It was working because of a bug. To do this properly now, I would
recommend something like the following:
var styleMap = new OpenLayers.StyleMap({
'select': OpenLayers.Util.extend({display: ""},
OpenLayers.Feature.Vector.style['select'])
});
// create a lookup table with different symbolizers for the different
// state values
var lookup = {
'shown': {fillColor: "green"},
'hidden': {display: "none"}
};
styleMap.addUniqueValueRules("default", "visibility", lookup);
Regards,
Andreas.
> I could have used lookup properties with empty style definition, but
> hidden features are then selectable on the map, which I don't want.
>
> I put some code (enclosed) to reproduce if someone wants to give it a look.
>
> Help appreciated.
>
> Regards,
> Pierre
>
>
>
> [1] http://trac.openlayers.org/changeset/8620
>
> ------------------------------------------------
> function init(){
> map = new OpenLayers.Map('map', {maxResolution:'auto'});
> var wms = new OpenLayers.Layer.WMS( "OpenLayers WMS",
> "http://labs.metacarta.com/wms/vmap0", {layers: 'basic'} );
> map.addLayer(wms);
> map.setCenter(new OpenLayers.LonLat(0, 0), 0);
>
> var styleMap = new OpenLayers.StyleMap();
>
> // create a lookup table with different symbolizers for
> the different
> // state values
> var lookup = {
> 'shown': {fillColor: "green"}
> };
>
> styleMap.addUniqueValueRules("default", "visibility", lookup);
>
> layer = new OpenLayers.Layer.Vector('Points', {
> styleMap: styleMap
> });
> map.addLayer(layer);
>
> var feature = new OpenLayers.Feature.Vector(
> new OpenLayers.Geometry.Point(0, 0),
> {visibility: 'shown'}
> );
> layer.addFeatures([feature]);
> var feature = new OpenLayers.Feature.Vector(
> new OpenLayers.Geometry.Point(0, 10),
> {visibility: 'hidden'}
> );
> layer.addFeatures([feature]);
>
> selectControl = new OpenLayers.Control.SelectFeature(layer);
> map.addControl(selectControl);
>
> selectControl.select(layer.features[0]);
> selectControl.select(layer.features[1]);
> }
> ----------------------------------
> _______________________________________________
> Dev mailing list
> Dev at openlayers.org
> http://openlayers.org/mailman/listinfo/dev
>
--
Andreas Hocevar
OpenGeo - http://opengeo.org/
Expert service straight from the developers.
More information about the Dev
mailing list