2011-03-19 7 views
12

Tengo un mapa V3 cargado y centrado en una determinada longitud/latitud de manera predeterminada. Una vez cargado, el usuario puede ingresar su dirección para obtener instrucciones sobre cómo llegar a ese punto. Cuando esto sucede, el mapa cambia de tamaño para acomodar un cuadro de direcciones a su izquierda. Debido a esto, la ruta está descentrada en la ventana del mapa. Probé el siguiente código, que pensé que debería funcionar lógicamente, pero fue en vano.Centrar un V3 Google Map en la ruta después de que se muestren las indicaciones

Nueva realización: Si cambio el tamaño de la ventana de alguna manera, comienza a funcionar como se espera.

He encontrado el problema: Necesito activar google.maps.event.trigger(map, 'resize') después de cambiar el tamaño del contenedor del mapa.

directionsService.route(query, function(result,status) { 
    if (status === google.maps.DirectionsStatus.OK) { 
     // This sets the directions container to display:block and resizes the map 
     document.getElementById('map-container').className = "directions"; 
     directions.setDirections(result); 
     var bounds = result.routes[0].bounds; 
     map.fitBounds(bounds); 
     map.setCenter(bounds.getCenter()); 
    } else { 
     alert(""); 
    } 
});
+0

una vez que llame a fitBounds debería centrarse basado en LatLngBounds así que no debería necesitar establecerCenter – kjy112

+0

Sí, agregué setCenter() en un último esfuerzo. No se centra como se espera con o sin él. – Justin

+0

malinterpreté por completo la parte del mapa "redimensionar". me alegro de que funcionó – kjy112

Respuesta

1

Ya has encontrado la respuesta que venía a decir. El evento de cambio de tamaño es muy importante para hacerlo bien cada vez que cambie el contenedor del mapa (o posiblemente su elemento principal). En mi caso, estaba cambiando entre dos pestañas (mapa e indicaciones de manejo). Al principio, el mapa aparecería correctamente en la pestaña del mapa, pero al cambiar a las direcciones y regresar al mapa se causó inestabilidad en la pantalla.

Si su mapa muestra solo una pequeña losa en una esquina (arriba a la izquierda en mi caso) con el resto en blanco es probable que tenga que disparar el disparador de cambio de tamaño.

Cuestiones relacionadas