2011-09-27 61 views
4

我寫的代碼在瀏覽器上運行得非常好。但是當我在iPhone上連接到wifi時,在調試器中出現錯誤: Javascript錯誤 - 無法找到變量:googleJavascript錯誤 - 無法找到變量:google

每當我調用任何Google地圖/方向/ geoLocation對象時,都會發生這種情況。


的代碼如下:

map = new Ext.Map({ 
    mapOptions : { 
     center : center, 
     zoom : 20, 
     // mapTypeId : google.maps.MapTypeId.ROADMAP, 
     navigationControl: true, 
     navigationControlOptions: { 
       style: google.maps.NavigationControlStyle.DEFAULT 
      } 
    }, 

    listeners : { 
     maprender : function(comp, map){ 
      pos = new google.maps.LatLng(lats, longs, true); 
      var marker = new google.maps.Marker({ 
       position: pos, 
       //title : 'Sencha HQ', 
       map: map 
      }); 

      map.setMapTypeId(google.maps.MapTypeId.HYBRID); 
      setTimeout(function(){map.panTo (pos);} , 1000); 
     } 
    }, 

    geo:new Ext.util.GeoLocation({ 
     autoUpdate:true, 
     maximumAge: 0, 
     timeout:2000, 
     listeners:{ 
      locationupdate: function(geo) { 
       pos = new google.maps.LatLng(lats, longs, true); 
       center = new google.maps.LatLng(geo.latitude, geo.longitude); 
       if (map.rendered) 
        map.update(center) 
       else 
        map.on('activate', map.onUpdate, map, {single: true, data: pos}); 
      }, 
      locationerror: function(geo, bTimeout, bPermissionDenied, bLocationUnavailable, message) { 
       if(bLocationUnavailable){ 
        alert('Your Current Location is Unavailable on this device'); 
       } 
       else if (bPermissionDenied){ 
        alert('Location capabilities have been disabled on this device.'); 
       }  
      } 
     } 
    }) 
}); 

每當碼遇到字谷歌會出現錯誤。也爲經緯度對象我得到的JavaScript錯誤:「......沒有經緯度構造的結果」

注:變量‘拉特’和‘多頭’這部分的代碼

之前已經n定義的給定值
+1

之前,你可以檢查你包括外部谷歌API庫? – ManseUK

+0

@ManseUK你是什麼意思由外部谷歌API的lib?我在index.html的腳本標記中添加了如下內容:' ' – SashaZd

回答

3

所以我貼過這個早期的評論,但由於這是解決問題的實際解決方案,我要交的這一次:d

好原來,我之所以讓所有那些錯誤是因爲我在一個代理服務器後面。奇怪的是,當我使用LAN電纜連接時,代理允許我訪問谷歌圖書館和服務器,但當我使用WiFi時則不能訪問。希望其他人卡住wid這種錯誤會發現這有點幫助:)

+0

我們在iPhone上遇到同樣的問題,您的評論幫助。 –

1

難道您是從Google服務器加載Google JavaScript庫嗎?如果是這樣,當你沒有WiFi時,這是行不通的。這就是爲什麼「谷歌」對象沒有定義。只有當設備在線時,才能使用Google地圖等。

編輯:沒關係,你說你通過WiFi連接。奇。我想我們需要看到完整的源代碼。

+2

好的結果是,我得到所有這些錯誤的原因是因爲我是在一個代理。奇怪的是,代理允許我在使用LAN電纜連接時訪問Google庫和服務器,但在使用WiFi時不會。 希望some1其他誰卡住wid這種錯誤會發現這有點有用:) – SashaZd

+0

任何新的解決方案呢? –

8

什麼爲我工作:刪除「https」開頭從

<script src="https://maps.google.com/maps/api/js?sensor=false"></script> 

,使其成爲

<script src="http://maps.google.com/maps/api/js?sensor=false"></script> 

我不知道爲什麼Safari不加載在不安全的人的安全頁面,但它似乎沒有。然後拋出錯誤。這是唯一一款似乎表現如此的移動瀏覽器。

+0

獎勵提示:完全刪除'http [s]:'前綴以讓瀏覽器自動匹配頁面的協議。也被稱爲[protocol-relative urls](http://paulirish.com/2010/the-protocol-relative-url/)。 –

0

我的解決方案是簡單地確保谷歌地圖js加載之前觸摸js。簡而言之

<script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=true"></script>

<script id="microloader" type="text/javascript" src="touch/microloader/development.js"</script>

相關問題