[OpenLayers-Users] Highlighting a feature?
Tim Schaub
tschaub at openplans.org
Fri Nov 30 13:05:37 EST 2007
Hey-
Gregor Mosheh wrote:
> A request has come up to highlight one or more polygon features, e.g.
> search results or the like. What would be an advisable way of doing this?
>
> Using plain Mapserver, we used additional query args and a filter, to
> create a layer which would only show only those features in some ungodly
> highlight-worthy color. The WMS server is still Mapserver, and I'd not
> be averse to using a OL.Mapserver layer.
>
> Alternately, I imagine that one could fetch the feature with WFS and
> draw it in some ungodly highlight-worthy color.
>
> And if there's a wiki page or example that I missed, even better!
>
Depends what you mean by a feature.
If you're rendering vector features on the client side, the
SelectFeature control is all about clicking on or hovering over a
feature to select it (add it to the layer's selectedFeatures array and
draw it with a select style).
If this fits your case, see:
http://openlayers.org/dev/examples/select-feature.html
You can also use the SelectFeature control to select a feature
programmatically. That is
control.select(feature);
control.unselect(feature);
If you are rendering your features server side (and you want to keep
doing this), then you can "select" with SLD via WMS. This of course
presumes that you know enough about what feature you want to select to
create a filter.
Of course, GetFeatureInfo provides a nice way to get feature attributes
based on pixel location (see
http://openlayers.org/dev/examples/getfeatureinfo.html). Two requests
just to highlight a selected feature is a bit clunky (one to get feature
info, one to apply SLD to a GetMap request). And who likes creating all
that sld/filter stuff anyway? Easier just to get your feature client
side and style it however you like.
For docs on the SelectFeature control, see
http://dev.openlayers.org/apidocs/files/OpenLayers/Control/SelectFeature-js.html
Tim
More information about the Users
mailing list