7 votos

Cómo obtener tipo de capa en OpenLayers 3?

Me gustaría recorrer a través de todas las capas añadidas en un ol.Map de instancia y sólo seleccione las capas vectoriales. Hasta ahora yo podría conseguir cada una de las capas con la a de la propiedad del objeto resultante de map.getLayers(). Como se puede ver en la imagen de abajo, a es una matriz y contiene un objeto relacionado con la capa correspondiente.

map.getLayers()

Las capas de la matriz se describen con una letra (T azulejo, V de vectores). Mi pregunta es, ¿cómo extraer esa información para mi script para procesar?

He leído un post relacionado con una respuesta usando una .CLASS_NAME de la propiedad, pero el OpenLayers 3 ol.layer objeto no tiene ese atributo.

Cualquier otro enfoque para obtener el tipo de capa o hecho comprobado, que no se puede conseguir esta propiedad después de que la capa de los objetos están construidos se considera como una respuesta correcta.

16voto

Mike Puntos 11

Si alguien se pincha con la identificación de tipo de capa en OpenLayers 3, no es más sofisticada, JavaScript método para lograr esto. Como la capa de los objetos se crean con la capa de constructores, el nativo instanceof de la función JavaScript que puede ser utilizado para verificar tipo de capa.

Como la identificación de un tipo de capa generalmente se mete en un if o switch cláusula, uno puede fácilmente comprobar la presencia de la del constructor prototype objeto de la capa en lugar de almacenar el tipo de propiedad en construcción.

var groupLyr = new ol.layer.Group();
groupLyr instanceof ol.layer.Group;
//true
groupLyr instanceof ol.layer.Vector;
//false

4voto

Lamar Puntos 145

No creo ser capaz de extraer la T y V, si es posible, va a ser fiable cruz-de los navegadores. Podría ser un navegador interpretación cosa. En cualquier caso, si usted tiene acceso a ella, sólo quiero añadir su propio atributo cuando se está creando la capa:

var foo_layer = new ol.layer.Vector(...);
foo_layer.layer_type = 'vector';

A continuación, puede utilizar más adelante en el código:

map.getLayers().a[0].layer_type
// 'vector'

Tendría que trabajar para usted?

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