Más

Agregue capas dinámicamente al grupo de capas


Tengo una aplicación Openlayers 3 y los usuarios pueden recuperar rutas almacenadas de un servicio web y mostrarlas en un mapa. Actualmente, cada ruta se agrega a la parte superior del índice, pero me gustaría que se insertaran en un grupo de capas existente.

He intentado usar estos métodos hasta ahora, pero fue en vano:

colección var = map.getLayerGroup (plannerLayers); colección.push (rutacargada); map.addLayer (rutacargada); // este es el único método que funciona map.getLayerGroup (plannerLayers) .addLayer (loadedRoute);

La administración de capas en general es algo con lo que parece estar luchando y, idealmente, me gustaría poder interrogar el mapa en busca de capas vectoriales y agregarles funcionalidades discretas. ¿Hay alguna forma de agregar / eliminar capas a un grupo mediante programación o incluso de moverse entre grupos?


Para cualquier otra persona que pueda encontrarse con este problema, resulta (bastante obvio para algunos) que debido a que un grupo de capas es un objeto que contiene otros objetos pero también una matriz de objetos, esto debe identificarse y la nueva capa se puede insertar en ella. Ejemplo a continuación:

/ ********************* / / * Obtener grupo de planificador * / / ******************* ** / function getPlannerGroup () {capas var = map.getLayers (); var longitud = capas.getLength (), l; para (var i = 0; i 

Espero que esto ayude a cualquiera que busque hacer algo similar;)


He estado codificando para OpenLayers todo el fin de semana, y lo que he leído en todas partes suena demasiado complicado, aquí está la forma más fácil y corta de agregar capas a LayerGroup

Primero agregue un "grupo" al mapa, llamémoslo markerGroup

markerGroup = new ol.layer.Group ({capas: [], nombre: 'markerGroup'}); var map = new Map ({target: 'map', layer: [this.markerGroup]}) // Obtenga la capa que desea editar, puede ser una variable o directamente parte del mapa // Prefiero almacenar mis marcadores en una variable this.markerGroup.getLayers (). array_.push (vectorLayer) // this.map.get ("markerGroup"). getLayers () debe devolver la misma matriz this.map.removeLayers (this.markerGroup); this.map.addLayers (this.markerGroup);

Limpio y fácil de leer;)


La respuesta de dvmac01 me ayudó mucho. ¡Gracias!

Una cosa que me gustaría agregar es que si desea agregar otra capa al grupo, entonces debe trabajar un nivel por encima de eso. (Trabajar con OpenLayers v.4.6.5)

Por la presente, proporciono un ejemplo para verificar si ya existe una capa de grupo y, de ser así, agregar la nueva capa. Vea abajo:

var innerLayers = []; // repite cada capa del mapa map.getLayers (). forEach (function (layer) {if (layer instanceof ol.layer.Group) {// mira si la capa de grupo ya existe if (layer.get ("nombre" ) === "Planner") {// comprobar si layer.getLayers existe if (layer.getLayers) {// obtener capas internas de la capa de grupo como Collection innerLayers = layer.getLayers (); // ¡no hay matriz! // nuevo layer to Collection innerLayers.push (loadedRoute); if (innerLayers instanceof ol.Collection) {// establece la colección de capas del grouplayer layer.setLayers (innerLayers);}}}}});

Confirmo la respuesta anterior, hago mi propia versión, funciona.

var all_layer_groups = map.getLayers (); var layer_group; para (i = 0, n = all_layer_groups.getLength (); i 


Ver el vídeo: CAPAS LAYERS en AutoCAD. Necesitas saber ESTO! Propiedades configurar layer 2018 2019 2020 2021 (Octubre 2021).