El módulo de direcciones de Bing Maps Ajax v7 establece incorrectamente los límites cuando la capa del mapa está oculta

Tengo una aplicación web relativamente simple, que permite al usuario ingresar dos puntos de ruta (desde y hacia ubicaciones), luego hacer clic en un botón para obtener el itinerario de direcciones y un mapa con la ruta trazada en el mapa.

La aplicación se diseñó de modo que el formulario, el itinerario y el mapa estuvieran en "pestañas" separadas y las capas se pudieran mostrar y ocultar según la selección de pestañas.

Extrañamente, el mapa siempre se acercaba al zoom mínimo (visión del mundo completo), aunque los marcadores (puntos de referencia) y la ruta de la ruta se trazaban correctamente, los límites del mapa no se respetaban. Si el mapa estaba visible, se respetaron los límites de la ruta y el mapa funcionó como se esperaba.

Un ejemplo de esto está aquí: http://jsfiddle.net/junto/DMR2T/

Haga clic en 'Obtener indicaciones' cuando el mapa esté visible y el mapa esté ampliado a los límites correctos. Luego cambie el mapa y haga clic en 'Obtener indicaciones' nuevamente. Cambia el mapa de nuevo a visible. Verá que el mapa tiene el nivel de zoom y los límites incorrectos.

La última versión de Google Chrome, Safari, Firefox muestra este problema. Internet Explorer no lo hace.

Es esto un error?

preguntado el 03 de mayo de 12 a las 13:05

1 Respuestas

Supongo que para calcular correctamente el zoom y los límites, el mapa necesita saber su tamaño de visualización. Para que el mapa sepa eso, debe ser visible. Entonces, una solución alternativa sería mover el mapa fuera de la pantalla en lugar de ocultarlo.

Vea mi ejemplo actualizado aquí: http://jsfiddle.net/ZWzjC/

En mi ejemplo, simplemente establecí un margen izquierdo negativo, estoy seguro de que hay formas más inteligentes de mover algo fuera de la pantalla manteniendo su visibilidad. Intenté usar la visibilidad: oculto pero eso no parece ocultar el mapa correctamente. display:none no funcionará ya que eso hace que el mapa tenga 0 dimensiones, y eso es lo que .toggle() probablemente usa internamente de todos modos.

contestado el 03 de mayo de 12 a las 17:05

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.