1

我使用Sencha Touch和Phonegap構建一個小應用程序。
在這個應用程序,我需要谷歌地圖API,因爲我想顯示地圖。當互聯網可通過Ext.data.connection加載谷歌地圖API Sencha Touch和Phonegap

如果設備沒有互聯網連接,則存在問題,因此Google地圖API無法加載到HTML中。所以我檢查互聯網連接。
如果互聯網連接可用我嘗試用Ext.data.connection加載谷歌地圖API:

var conn = new Ext.data.Connection(); 
var url = 'http://maps.google.com/maps/api/js?sensor=true&'; 
conn.request({ 
    url: url, 
    callback: function(options, success, response){ 
      if(response && response.responseText){ 
       // do something 
      } 
    }, 
    method:'GET'} 
); 

如果我在測試谷歌Chrome應用程序,我收到以下錯誤:XMLHttpRequest cannot load http://maps.google.com/maps/api/js?sensor=true&amp ;_dc=1302077479281. Origin null is not allowed by Access-Control-Allow-Origin.

一點也沒有如果我嘗試通過file:///或通過網絡服務器(http://localhost/app

嘗試調用HTML無論如何獲取Google地圖API並「繞過」或避免此訪問控制行爲?

回答

3

嘿,對不起,這不會是一個簡單的答案。

我想你想使用條件腳本加載器。這些都是API,只有當條件(你有網絡連接)滿足時纔會將腳本添加到文檔中。

一個好的是http://yepnopejs.com/

根據這一線索,有可能加載谷歌地圖,但它在線程說你必須做的。 Google Maps with YepNope

具體來說,包括yepnope.js並刪除任何對Google地圖的引用。

yepnope([{ 
     load: 'http://www.google.com/jsapi', 
     callback: function(){ 
      google.load("maps", "3", { 
       callback: function(){ 
        console.log("loaded"); 
       }, 
       other_params: "sensor=false" 
      }); 
     } 
    }]); 

當它的時間呈現地圖(必須谷歌地圖滿載後進行),請確保您添加Ext.Map卡,然後撥打:

this.doLayout(); 

我覺得這「會的工作非常適合你,它的工作對我來說...

+0

感謝您的回答,這可以工作。我自己發佈了一個解決方案,沒有任何額外的庫需要... – hering 2011-04-07 13:10:23

+0

與yepnope,我可以做其他與成功和失敗的東西,這是一個完整的API,也許爲你所需要的矯枉過正。 – ballmw 2011-04-07 13:30:40

3

我發現從谷歌的一些指令,因此下面的工作:

var script = document.createElement("script"); 
script.type = "text/javascript"; 
script.src = "http://maps.google.com/maps/api/js?sensor=true&callback=initializeMap"; 
document.body.appendChild(script); 
+0

我相信這可以正常工作。 – ballmw 2011-04-07 13:32:00