Estoy utilizando OpenLayers. Cuando un usuario mantiene Shift, hace clic en el mapa y mueve el ratón, la caja se muestra. Cuando el usuario suelta el botón del ratón, intercepto el evento y uso las coordenadas de la caja.
var boxControl = new OpenLayers.Control();
OpenLayers.Util.extend(boxControl, {
draw: function () {
// this Handler.Box will intercept the shift-mousedown
// before Control.MouseDefault gets to see it
this.box = new OpenLayers.Handler.Box(boxControl,
{ "done": this.notice },
{ keyMask: OpenLayers.Handler.MOD_SHIFT });
this.box.activate();
},
notice: function (bounds) {
var ll = map.getLonLatFromPixel(new OpenLayers.Pixel(bounds.left, bounds.bottom));
var ur = map.getLonLatFromPixel(new OpenLayers.Pixel(bounds.right, bounds.top));
doSomething(ll, ur);
}
});
map.addControl(boxControl);
Funciona con el botón Shift. Pero cuando cambio MOD_SHIFT a MOD_ALT, mi código es ignorado, el cuadro delimitador nunca se muestra en pantalla y la función "notice" nunca es llamada.
¿Podríais ayudar a solucionarlo (para los botones Alt o Control), por favor?
PS. No puedo utilizar OpenLayers.Control.Select