2010-02-10 4 views
9

Estoy tratando de escribir un poco de funcionalidad de mapa de Google y jugando con cierres de javascript con el objetivo de organizar y estructurar mejor mi código.¿Puedo poner las funciones del mapa de google en un cierre?

Tengo el siguiente código:

var gmapFn ={ 
    init : function(){ 
     if (GBrowserIsCompatible()) { 
      this.mapObj = new GMap2($("#map_canvas")); 
      this.mapObj.setCenter(new google.maps.LatLng(51.512880,-0.134334),16); 
     } 
    } 
} 

Entonces me llaman más tarde en un documento jQuery listo:

$(document).ready(function() { 
    gmapFn.init(); 
}) 

He ajustar las teclas de mapas de Google y pero me da un error en main.js:

excepción no detectada: [Excepción ... "Código de error devuelto por el componente: 0x80004005 (NS_ERROR_FAILURE)" nsresult: "0x80004005 (NS_ERROR_FAILURE)" ubicación: "JS frame :: http://maps.gstatic.com/intl/en_ALL/mapfiles/193c/maps2.api/main.js :: IG línea :: 170" de datos: no] QO()

el error parece ser arrojado en la prueba GBrowserIsCompatible() que me beieve se ha reducido a mí usando este cierre, es que hay una manera de mantener en un cierre y obtener init() de trabajo?

Respuesta

15

No hay nada de malo en su código o implementación, salvo el hecho de que GMap2 no puede usar un objeto jQuery como referencia. Use el simple viejo document.getElementById("map_canvas").

Como alternativa, puede usar $("#map_canvas")[0] o $("#map_canvas").get(0) para hacer referencia al elemento DOM real y pasarlo al constructor GMap2 si desea ser coherente con su uso de jQuery.

Por cierto, parece que está mezclando v2 con v3, p. Ej. new google.maps.LatLng() contra new GLatLng().

Cuestiones relacionadas