Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

523
Vistas
Cómo representar el mapa del folleto cuando está oculto "display: none"; padre

Estoy experimentando un comportamiento extraño al mostrar el mapa del folleto en mi página. Normalmente, el mapa se representa como se esperaba y funciona bien. Sin embargo, quiero mostrar el mapa solo cuando ocurre un error en los formularios que detecto en javascript. Entonces, si configuro el padre <div id="map"> para display: none; y mostrarlo más tarde según sea necesario, los mosaicos no están cargados (o solo se cargan parcialmente y no continúan) y el mapa está extrañamente "dislocado" (no centrado como se define en js).

Mi opinión es que tal vez el navegador no represente los elementos dentro de una display: none; ¿padre?

Intenté ocultar el mapa con la función $(document).ready(...) pero no hizo ninguna diferencia. El mismo comportamiento se repite tan pronto como oculto y muestro el mapa. Probé esto en Firefox 44.0 y Chromium 48.0 y el comportamiento es consistente.

Cualquier consejo sería útil. ¿Es este comportamiento general para elementos cargados remotamente (ajax)?

Edición 1:

Ahora conozco la solución y una solución alternativa (vea las respuestas a continuación), pero todavía no estoy seguro de si este es un comportamiento global para los elementos cargados de forma remota. Gracias por cualquier explicación.

Edición 2:

Consulte la respuesta aceptada para obtener una explicación.

over 4 years ago · Santiago Trujillo
3 Respuestas
Responde la pregunta

0

Lo que sucede es que su instancia L.Map no puede calcular correctamente sus dimensiones debido a la regla display:none CSS. Si no obtiene las dimensiones adecuadas, no sabe cuántos mosaicos cargar y cómo colocarlos, simplemente no carga ninguno. XHR no tiene nada que ver con eso. El mapa no sabe qué XHR, ese es el problema.

Después de cambiar de display:none a display:block llame al método invalidateSize en su instancia de L.Map . Obligará al mapa a (re)renderizarse:

Comprueba si el tamaño del contenedor del mapa cambió y actualiza el mapa si es así; llámelo después de haber cambiado el tamaño del mapa dinámicamente, también animando la panorámica de forma predeterminada. Si options.pan es falso, no se producirá la panorámica. Si options.debounceMoveend es verdadero, retrasará el evento moveend para que no suceda con frecuencia, incluso si el método se llama muchas veces seguidas.

http://leafletjs.com/reference.html#map-invalidatesize

over 4 years ago · Santiago Trujillo Denunciar

0

Otra solución es usar la opacity: 0; o height: 0px; en lugar de display: none;

over 4 years ago · Santiago Trujillo Denunciar

0

La solución parece estar en ocultar el mapa solo después de que la página se haya cargado así:

 $( window ).load(function () { $('#map').hide(); });

De esta manera, el mapa se oculta solo después de que se haya renderizado por completo. Mostrándolo después de esto con $('#map').show(); muestra un mapa con mosaicos cargados que esperaría sin problemas.

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda