2010-02-10 8 views
9

Sto cercando di scrivere alcune funzionalità di google map e di giocare con le chiusure javascript con l'obiettivo di provare a organizzare e strutturare meglio il mio codice.Posso inserire le funzioni della mappa di google in una chiusura?

Ho il seguente codice:

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

Poi mi chiamano più tardi in un documento jQuery pronto:

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

Ho installato le chiavi mappa di Google e, ma ottengo un errore su the main.js:

eccezione non rilevata: [Eccezione ... "Componente restituito codice di errore: 0x80004005 (NS_ERROR_FAILURE)" nsresult: "0x80004005 (NS_ERROR_FAILURE)" percorso: "JS frame :: http://maps.gstatic.com/intl/en_ALL/mapfiles/193c/maps2.api/main.js :: :: ig linea 170" Dati: no] QO()

L'errore sembra essere gettato al GBrowserIsCompatible() di prova che ho beieve è giù a me con questa chiusura, c'è un modo per tenere in una chiusura e get init() funziona?

risposta

15

Non c'è niente di sbagliato nel codice o nell'implementazione, salvo il fatto che GMap2 non può usare un oggetto jQuery come riferimento. Utilizzare semplice vecchio document.getElementById("map_canvas").

In alternativa, è possibile utilizzare $("#map_canvas")[0] o $("#map_canvas").get(0) per fare riferimento all'elemento DOM effettivo e passarlo al costruttore GMap2 se si desidera essere coerenti con l'utilizzo di jQuery.

Per inciso, sembra che tu stia mescolando v2 con v3, ad es. new google.maps.LatLng() vs new GLatLng().

Problemi correlati