1 votos

No se puede interceptar el botón Alt cuando el usuario arrastra una caja (OpenLayers)

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

2voto

Kornelije Petak Puntos 475

¿Puedes poner también el código de inicialización del mapa aquí? No estoy 100% seguro, pero ten en cuenta que cuando inicializas el objeto mapa sin ningún control, el objeto mapa se crea asociado a 4 controles, y entre ellos está el OpenLayers.Control.Navigation mediante el cual se puede dibujar un zoombox en el mapa (detrás de él hay un OpenLayers.Handler.Box con la máscara de teclas por defecto MOD_SHIFT). Así que dudo que este boxControl tenga realmente efecto.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X