1 votos

¿Utilizando el evento onclick de OpenLayers 3 Feature?

Busqué una forma de disparar el evento onclick y encontré ¿Añadir un controlador de eventos a una función en OpenLayers 3? en Stack Overflow. Yo undestand de esta pregunta es que no hay evento onclick a las características. Quiero entender por qué es? Y tal vez hay próxima a la API y han añadido un clic eventos.

la forma en que se ofrecieron a hacerlo es así:

map.on("click", function(e) {
    map.forEachFeatureAtPixel(e.pixel, function (feature, layer) {
        //do something
    }
}

Esto significa que tengo que hacer clic en todo el mapa div, a continuación, busque mi specificPixel que contiene la característica y luego hacer lo que quiera. Suena primitivo y tomará demasiado tiempo para una gran cantidad de características.

¿Hay alguna otra forma de resolver este problema?

En segundo lugar, como veo no hay muchos eventos en OpenLayers 3 api . ¿Por qué?

3voto

CoverosGene Puntos 3294

Esto significa que tengo que hacer clic en todo el mapa div, a continuación, busque mi specificPixel que contiene la característica y luego hacer lo que quiera.

Creo que no entiendes cómo funciona forEachFeatureAtPixel. Una vez que hace clic, toma el píxel en el que hizo clic e itera a través de todas las capas para encontrar cualquier característica dentro de un rango de esa coordenada de píxel. No recorre todos los píxeles del mapa. Mira el código para entenderlo mejor. Además, ni siquiera itera a través de "TODAS" las características, encuentra las características que son actualmente visibles en el estado del marco. Alternativamente, si usted tiene demasiadas características, Usted puede dividir sus características a pocas capas y aplicar un filtro de capa también

¿Hay otra forma de resolver este problema?

Sí, puede añadir un seleccionar interacción al mapa y utilizar el evento 'add' en su colección de características.

var select_interaction = new ol.interaction.Select();

select_interaction.getFeatures().on("add", function (e) { 
     var feature = e.element; //the feature selected
});

map.addInteraction(select_interaction);

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