Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

521
Visualizações
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 Respostas
Responde à pergunta

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 Relatório

0

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

over 4 years ago · Santiago Trujillo Relatório

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda