[OpenLayers-Dev] hidden but selectable features
Pierre GIRAUD
bluecarto at gmail.com
Tue Jan 27 10:08:08 EST 2009
It works and it looks much prettier.
I'm impressed.
Side note : Eric was close to find this solution too.
Thanks.
Regards,
Pierre
On Tue, Jan 27, 2009 at 3:57 PM, Andreas Hocevar <ahocevar at opengeo.org> wrote:
> 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