[OpenLayers-Users] Query only in visible layers
Alexandre Dube
adube at mapgears.com
Tue May 5 08:31:30 EDT 2009
Hi,
Do you mean visible OpenLayers layers or server side-layers ? Do you
use (1) one OL layer per server-side layer or (2) are they all in the
same OL layer ?
If (1) : loop through your map layers for each visible/inRange layer
to get their params.['LAYERS'] property. If they come from the same
server, you can merge them in a single request.
If (2) : If you use MapServer and you have direct access to the
mapfile, you could do the following. Please, anyone correct me if I'm
wrong, but I think getfeatureinfo requests are made regardless of a
layer's minscaledenom or maxscaledenom property. So you could create a
template with leg_layer_minscale and leg_layer_maxscale values to get
theses values from the server-side into a javascript array. Also, add
the layer name at the same time (because that's the value to be added to
the query_layers query property). Then, on click, you could loop through
this array to check that the layers are currently visible (compare with
current scale). See that (3) link for more details. Does that make sense ?
(3) http://mapserver.org/output/html_legend.html
Regards,
Alexandre
Ivan Carreira wrote:
> Hi all,
>
>
>
> I have a problem.
>
> I need an expression to limit queries only to the layers that are visible at that time on the map.
> Queries are displayed via a popup.
> The code where queries are made and displayed in the popup is as follows:
>
> var showInfo = function(event) {
>
> var pixel = event.xy;
> var lonlat = this.getLonLatFromPixel(pixel);
> var message = null;
> var params = {};
> params['service'] = 'wms';
> params['request'] = 'GetFeatureInfo';
> params['version'] = '1.1.1';
> params['info_format'] = 'text/plain';
> params['srs'] = this.getProjection();
> params['bbox'] = this.getExtent().toBBOX(6);
> params['width'] = this.getSize().w;
> params['height'] = this.getSize().h;
> params['feature_count'] = 1;
> params['x'] = pixel.x; .
> params['y'] = pixel.y;
> params['layers'] = 'camino';
> params['query_layers'] = 'camino';
>
> new OpenLayers.Request.GET({
> url: server,
> async: false,
> params: params,
> success: function(data) {
> message = data.responseText;
> }
> });
>
>
>
> message = getHTML(message);
>
>
> var popup = new OpenLayers.Popup.FramedCloud('popup', lonlat, null, message, null, true, null);
>
> this.addPopup(popup);
>
> };//End of function showInfo()
>
> map.events.register('click', map, showInfo);
>
>
> ------------------------------------------------------------------------
> ¿Eres del Madrid, del Barça, del Atleti...? Apoya a tu equipo en la
> Zona Fan de MSN Deportes
> <http://opiniones.msn.es/default.aspx/Futbol/Atletico-de-Madrid%20>
> ------------------------------------------------------------------------
>
> _______________________________________________
> Users mailing list
> Users at openlayers.org
> http://openlayers.org/mailman/listinfo/users
>
--
Alexandre Dubé
Mapgears
www.mapgears.com
More information about the Users
mailing list