2013-06-03 8 views
5

Come posso utilizzare l'API di google earth con backbone.js + jquery mobile?come posso utilizzare l'API di google earth con backbone.js + jquery mobile?

Ho creato un'applicazione utilizzando backbone.js, underscore.js e jQuery Mobile. Per Google API terra, io sto usando il codice di esempio elencato in https://developers.google.com/earth/documentation/#using_the_google_earth_api

mio il rendering modello, e tutte le altre pagine stanno lavorando bene, ma quando carico di Google Earth API in un tag, non è carico e in consolle js ottengo un messaggio : "ERR_INVALID_DIV".

Il modulo Google.earth non richiama mai initCallback. È sempre chiamato failureCallback quando viene richiamato google.earth.createInstance.

Spiego il codice di esempio della mia applicazione come sotto, quindi basandomi su quello che potrebbe essere, ottieni la mia struttura di codice e ti aiuta a risolvere il mio problema.

mio codice js come sotto,

myjs1.js

var ge; 
function init() { 
    google.earth.createInstance('map3d', initCB, failureCB); 
} 

function initCB(instance) { 
    console.log(' init call back call '); 
    ge = instance; 
    ge.getWindow().setVisibility(true); 
} 

function failureCB(errorCode) { 
    console.log(errorCode); 
} 

Ora il mio codice Backbone come sotto,

myjs2.js

WebApp.MyPage= Backbone.View.extend({ 

initialize:function (result) { 
    this.template =_.template($('#myPage').html()); 
}, 

render:function (eventName) { 
    var self = this; 
    mydata = object dict of my data; 
    $(self.el).html(self.template({mydata:mydata})); 

    google.load("earth", "1"); 

    init(); 
    google.setOnLoadCallback(init); 

} 

Ora il mio codice HTML simile come sotto,

<script type="text/template" id="myPage"> 
    <div data-role="page"> 
     <div data-role="content"> 
      <div id="map3d" style="height: 400px; width: 600px;"></div> 
     </div> 
    </div> 
</script> 

myhtml.html

Esiste un modo per risolvere questo problema?

Qualsiasi aiuto apprezzato.

+0

Dovresti fornire almeno del codice per dare contesto alla tua domanda, altrimenti i nostri indizi sono ancora minori del tuo ... – namero999

risposta

0

L'API Earth funziona con Google Earth Plugin, che è disponibile solo su Windows e Mac OSX. Non è disponibile su dispositivi mobili, mi dispiace!

Se stai eseguendo il test sul tuo Mac o sistema Windows, dovresti riuscire a farlo funzionare. Il codice di errore ERR_INVALID_DIV sembra non trovare il div map3d. Inserirò un'istruzione debugger; nel codice appena prima della chiamata google.earth.createInstance(), quindi guarderò in giro nell'ispettore DOM e vediamo se map3d si trova nel DOM. Dovrebbe provenire dal tuo modello se quella parte sta funzionando.

Ma questo non ti aiuterà quando proverai a caricare il tuo sito su un dispositivo mobile, perché non avrai a disposizione il plug-in Earth.

+0

Sto testando il mio sistema Windows con il plugin Terra installato, ma non funziona :( –

+0

OK, Certamente dovrebbe essere possibile farlo funzionare sul tuo sistema Windows, ma è l'obiettivo finale di usarlo su un sito mobile? Questo non funzionerà –

+0

Quando provo questo in un'unica pagina html statica senza backbone, underscore e jQM di funziona bene ma non in un'applicazione dinamica creata da backbone, underscore e jQM. Quindi, per la mia applicazione dinamica ho solo un'opzione come Google Map, ma amo Google Earth. –

Problemi correlati