[OpenLayers-Users] Canvas + SelectFeature = Bug (OL 2.11/2.12)
Mike Ryan
mr at mry4n.net
Tue Jul 3 14:14:19 PDT 2012
When I render a layer as a Canvas it no longer respects the layer index.
In my case, the Canvas layer is made up of polygons and a separate layer
above it is made up of points. Any points within polygons cannot be
selected -- only the surrounding polygon gets selected.
I do not have this problem if the polygon layer is rendered as something
other than a Canvas.
This problem is caused by the order of the layers in the array sent to
OpenLayers.Control.SelectFeature. The workaround is ordering the layers
array so that the Canvas layer comes after layers that are above it in
the layer index.
In other words, even though I add layers to the map like this:
map.addLayers([canvas_layer, point_layer])
I have to add layers to the control like this:
map.addControl(new OpenLayers.Control.SelectFeature([point_layer,
canvas_layer]))
To reproduce this problem do the following.
1. Go to:
http://openlayers.org/dev/examples/select-feature-multilayer.html?renderer=Canvas
2. Swap the order of vectors1, vectors2 in lines 62 & 65 so they look
like this:
(line 62) map.addLayers([wmsLayer, vectors2, vectors1]);
...
(line 65) selectControl = new OpenLayers.Control.SelectFeature(
[vectors2, vectors1],
Changing addLayers puts the markers above the squares. Changing
SelectFeature disallows markers within squares to be selected, even
though they are above the squares. You will only see this problem if you
render the layers as Canvases (i.e. include "?renderer=Canvas" in the url).
Considering that layer order in SelectFeature has no effect on layers
not rendered as Canvases, this is either a bug or requires some
documentation for SelectFeature.
This was also an issue in OL 2.11, but 2.12 improved the situation. In
2.11 if you turned off the Canvas layer it persisted even though you
could not see the layer! If you panned the map, it would finally go away
and you could click the layers below.
-Mike
Reference:
OpenLayers.Control.SelectFeature
http://dev.openlayers.org/docs/files/OpenLayers/Control/SelectFeature-js.html#OpenLayers.Control.SelectFeature.OpenLayers.Control.SelectFeature
OpenLayers Select Feature on Multiple Layers Example
http://openlayers.org/dev/examples/select-feature-multilayer.html?renderer=Canvas
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osgeo.org/pipermail/openlayers-users/attachments/20120703/ffb5fd07/attachment.html>
More information about the Users
mailing list