4 votos

OpenLayers - ¿es posible que una característica de tener un solo clic y doble clic en el evento?

Yo voy a tener un OpenLayer mapa con una sola capa vector que contiene muchas características. He estado usando SelectFeature a aparecer algo de información cuando una característica se hace clic, y que está funcionando bien. Sin embargo, ahora quiero añadir alguna funcionalidad cuando la función es doble-clic - específicamente sólo quiero acercar y no tener la ventana emergente que aparece.

Esto dio un tiro: http://blog.slashpoundbang.com/post/2342888467/openlayers-zoom-when-a-feature-in-a-vector-layer-is Pero quitado a mi solo clic funcionalidad.

Esencialmente, es el mismo problema que SelectFeature con Doble Clic

Alguna idea?

ACTUALIZACIÓN:

Así que estoy tratando de una solución con SelectFeature para manejar un solo clic y registrar un detector de eventos en la capa vectorial para manejar el doble clic. Todo lo que quiero hacer es acercar la doble clic característica. Esto es lo que tengo:

    VEClayer.events.register('dblclick', VEClayer, function(e){
                    map.zoomToExtent(e.features.geometry.getBounds(), closest=true);
                        }
                        );

Sin embargo, ahora tengo otro problema, y no estoy seguro de si es causada por tener tanto SelectFeature y la escucha activa o qué. El nuevo problema es que lo intentara no puedo acceder a cualquiera de los atributos de evento. Así que cuando yo trate de conseguir por correo.características.de la geometría.getBounds(), Firebug me da el error "e.características no está definido". He tratado de conseguir esto varias otras maneras (e.xy, e.longlat, getMousePosition) y siempre el mismo resultado.

3voto

Ne An Derthal Puntos 39789

No te ves en OpenLayers.Controlador.Haga clic en?

El control select toma un controlador como opción, y la de arriba tiene un valor boolean que debe decirle si es individual o doble clic.

Ejemplo

No es exactamente lo que usted pidió (seleccione en dblClick; anule la selección de clic), pero debe ser fácil de cambiar

// Simple WFS layer
wfs = new OpenLayers.Layer.Vector(
    "WFS",
    {
        strategies: [new OpenLayers.Strategy.BBOX()],
        protocol: new OpenLayers.Protocol.WFS(
        {
            url:  "/optima/geoserver/wfs",
            featureType: "node",
            featureNS: "http://piemonte.optima.sistemaits.com",
            geometryName: 'poin'
        })
});
map.addLayer(wfs);

// Add a select control (note: this control is added to the map, but is disabled)
var select = new OpenLayers.Control.SelectFeature(
    wfs,
    {
        multiple: false,
        clickout: true,             // Will be ignored (aka, you have to deselect a feature when no feature is found onClick)
        onSelect: function(feature)
        {
            // ...
        },
        onUnselect: function(feature)
        {
            // ...
        }
    }
);

map.addControl(select);

// Handler to intercept click.
handler = new OpenLayers.Handler.Click(
    select,  // The select control
    {
        click: function(evt)
        {
            console.warn(this); // OpenLayers.Control.SelectFeature
            var feature = this.layer.getFeatureFromEvent(evt);

            // clickout
            if(this.layer.selectedFeatures){
                this.unselect(this.layer.selectedFeatures[0]);
            }
        },
        dblclick: function(evt)
        {
            console.info(this); // OpenLayers.Control.SelectFeature
            var feat = this.layer.getFeatureFromEvent(evt);
            // Select a feature
            if(feat){
                this.select(feat);
            }

        }
    },
    {
        single: true,
        double: true,
        stopDouble: true,
        stopSingle: true
    }
);

// select.activate();  // The select control must NOT be active
handler.activate();    // The handler will handles the click events for the select control

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