1 votos

zoom a la medida de varias capas vectoriales

Estoy tratando de hacer un zoom a la medida de los datos de varias capas vectoriales.

He intentado crear un nuevo OpenLayers.Bounds y añadir un 'loadend' para cada OpenLayers.Layer.Vector para aumentar los límites, pero entonces no sé dónde poner map.zoomToExtent(bounds)... ¿hay alguna forma de ejecutar esto después de que se hayan cargado todas las capas?

He intentado https://gis.stackexchange.com/a/6297 pero no funcionó, ya que las capas vectoriales no fueron creadas todavía...

También he probado https://gis.stackexchange.com/a/41588/16356 Pero tampoco ha funcionado, ya que tengo varias capas.

EDITAR: Así es como he solucionado el problema, gracias a Vadim.

bounds = new OpenLayers.Bounds();
map = new OpenLayers.Map('map');
LOADED_LAYERS = 0;

layers[1] = new OpenLayers.Layer.Vector("layer1", {
                eventListeners: {
                    'loadend': function (evt) {
                        LOADED_LAYERS++;
                        bounds.extend(layers[1].getDataExtent());
                        if (LOADED_LAYERS == 3) {
                            map.zoomToExtent(bounds);
                        };
                    }
                }
            });
layers[2] = ...;
layers[3] = ...;

map.addLayers(layers);
map.zoomIn();

1voto

Yaakov Ellis Puntos 15470

Esto no es realmente una pregunta de SIG, sino más bien de lógica/algoritmo básico. Averiguar un esquema para el seguimiento de que todas sus capas se cargan y luego ejecutar el map.zoomToExtent. Es tan simple como eso.

¿Conoces la lista de capas que se añadirán con antelación (mediante código) o no (mediante alguna interfaz de usuario de capas)? ¿Sabes los nombres? o el número de capas?

Crea un array y lleva la cuenta de lo que se ha cargado (después de que se dispare cada loadEnd). Recorre el array, cada vez, y comprueba "ok, ¿se han reportado todos mis chicos o queda algo pendiente?". Una vez que todas las capas están hechas, entonces haz un zoom.

O puedes hacer zoom al máximo cada vez que se añada una capa, pero lo único que conseguirás es que tu mapa salte a una extensión cada vez mayor. .... A menos que eso sea lo que quieras.

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