2011-09-02 14 views
16

tengo un problema al mostrar GoogleMap.GoogleMap offsetWidth problema

Aquí está el código fuente de página web: http://pastebin.com/LjhVbEF7

cuando estoy tratando de ejecutar este sitio web, un mapa no se visualiza. Consola Firebug dice Uncaught TypeError: Cannot read property 'offsetWidth' of null

¿Tiene alguna idea de qué estoy haciendo mal? Sé que hay muchos ejemplos de trabajo en la red, pero este código es generado por un script especial y no puedo interferir demasiado. Tal vez me olvidé de establecer algunas variables?

gracias, Mike

=================

EDIT: Este código está trabajando sólo cuando voy a poner en JS definición de función y llámalo en el parámetro de carga del cuerpo. ¿Tienes alguna idea de cómo puedo hacerlo funcionar sin usar esa función y cargar param?

Respuesta

21

que se dan cuenta de que esto es probablemente un poco tarde - pero espero que sea capaz de ayudar a alguien más:

En En su caso, la función de inicialización no se activa, aunque también puede deberse a que los atributos de ancho y alto no se establecen en el contenedor div. Si no desea simplemente agregar el evento de carga para el cuerpo de la etiqueta se puede utilizar el siguiente jQuery:

//Add onload to body 
$(window).load(function(){ 
    initialize() 
}); 
+0

¿Qué sería una alternativa si está usando una aplicación de una sola página? –

+0

Me imagino que solo necesitaría llamar a inicializar una vez que el parcial que está utilizando se haya cargado por completo. – Chris

1

No estoy seguro, pero podría ser esta línea

map_4e60b1f9c94ae.setCenter(new google.maps.LatLng(0, 0, 1)); 

Creo new google.maps.LatLng tiene sólo dos atributos, la latitud y la longitud.

Pruebe este bit desde el sitio de mapas

var latlng = new google.maps.LatLng(-34.397, 150.644); 

http://code.google.com/apis/maps/documentation/javascript/tutorial.html

+0

no es eso, pero he descubierto algo nuevo. Por favor revise el EDIT en la publicación principal :) – mbajur

1

Trate de poner el código JavaScript en el cuerpo, y después div id="map_canvas"

Algo como esto:

<body> 
    <div id="map_canvas"></div> 

    <script type="text/javascript"> 
     var map_4e60b1f9c94ae = new google.maps.Map(document.getElementById("map_canvas"), {"mapTypeId":"roadmap","zoom":10}); 
     map_4e60b1f9c94ae.setCenter(new google.maps.LatLng(0, 0, 1)); 
    </script> 
</body> 
2

¿Estás trabajando en AngularJS? Yo estaba, y este problema persistió más allá de todas las soluciones anteriores. La razón fue que el parcial donde ubicaba mi mapa div no se completaba a tiempo, por lo tanto, el div era nulo, por lo tanto, el error que obtuviste.

ver la forma angular para llamar GoogleMaps aquí:

Initialize Google Map in AngularJS

2

mayor parte del tiempo estoy consiguiendo este error es sólo porque el elemento que me refiero en getElementById no está en la página o estoy usando el identificación incorrecta Error obvio, pero asegúrese de verificar dos veces antes de sumergirse en soluciones más avanzadas.