3 votos

Conflicto con el plugin de minimapa de Leaflet setView

Utilizando el plugin de minimapa de leaflet para construir un mapa con ventana de localización.

El mapa se inicia con el zoom a nivel de estado, con el minimapa oculto en la carga a través de este:

var miniMap = new L.Control.MiniMap(layers, { minimized: true, zoomLevelFixed: 9 });

Cuando un usuario selecciona un sitio de la lista desplegable, el mapa principal se desplaza/acerca a ese sitio usando setView, y el mimimap se desoculta a través de esto:

miniMap._setDisplay(miniMap.options.minimized = false);

Sin embargo, estoy recibiendo un conflicto en la carga inicial, donde por el minimapa no pan / zoom al lugar adecuado cuando se llama así (mapa principal pans y zoom correctamente):

map.setView([40.22087,-74.99483], 18);

Sin embargo, el minimapa se moverá al lugar adecuado cuando se llame inicialmente de esta manera:

map.setZoom(18);
map.setView([39.85019,-75.43627]);

Sin embargo, llamarlo de esa manera hace que setzoom se interrumpa al cambiar entre puntos (si el mapa ha sido panoramizado/zoomizado manualmente antes de cambiar de puntos).

Puedes ver el comportamiento del minimapa en este JSBin:

https://jsbin.com/lesokutona/edit?js,output

si selecciona "PH-07" en la carga. PH-67 utiliza el segundo método de ajuste de ubicación/zoom para fines de comparación. (para ver el comportamiento de impar al cambiar de punto, seleccione PH-07 y zoom/pan, luego cambie a PH-67.

Así que hay un conflicto aquí en alguna parte, pero no puedo precisarlo.

Estoy pensando que el cambio de la opción de visualización del mimimap está interrumpiendo de alguna manera su cambio de ubicación inicialmente, pero no puedo averiguar cómo evitarlo (ni tampoco explica realmente por qué la llamada a través del segundo método funciona). He intentado desactivarlo en su propia función, pero eso no parece solucionar el problema.

El conflicto setzoom/setview del segundo método es bastante obvio, pero no veo cómo eso permitiría que el minimapa se planifique correctamente inicialmente si el otro no lo hace.

Pensé que tal vez era un problema de límites... pero al desactivar eso tampoco afectó.

¿Alguien tiene alguna idea?

3voto

errald Puntos 6

He resuelto mi propia pregunta cambiando el conmutador de minimización por un addTo/removeFrom:

function toggleon() {
        if (toggle == 0) {
        miniMap.addTo(map);
        toggle = 1;
        map.removeLayer(missilegroup);
        };
};

... que parece haber resuelto todos los problemas de comportamiento.

No sé por qué no se me ocurrió ayer, pero en fin.

Continúa.

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