2014-04-03 28 views
3

我正在使用Google Maps JavaScript API v3和RequireJS編寫JavaScript應用程序。google.maps.geometry如何定義?

define('gmaps', ['goog!maps,3.9,packages:[geometry],language:de,other_params:sensor=false&channel=...&client=...'], 
function(){ 
    return window.google.maps; 
}); 

這在大多數的情況下,工作完全正常,甚至可以通過優化涅槃後的代碼:我爲了得到正確的依賴寫了gmaps一個小包裝。但是,有時我得到一個錯誤,有gmaps作爲一個依賴,並試圖計算距離的模塊中說gmaps.geometry is undefined

define(['gmaps'], function(gmaps) { 
    return { 
     ... 
     calcDistance: function(target) { 
      var position = this.getPosition(); 
      var distance = gmaps.geometry.spherical.computeDistanceBetween(
       new gmaps.LatLng(position.latitude, position.longitude), 
       new gmaps.LatLng(target.latitude, target.longitude) 
      ); 
      return (distance/1000).toFixed(2); 
     } 
    } 
}); 

這隻有當我嘗試頁面後立即執行calcDistance和所需的數據發生加載和只有時。我想這是與gmaps異步加載的問題,但我不完全理解它。 gmaps如何定義,但gmaps.geometry是未定義的?有沒有什麼辦法解決這一問題?

回答

1

packages:[geometry]似乎沒有像我想的那樣工作,所以幾何圖形根本沒有加載。 Google似乎在某些時候內部加載了幾何圖形,所以我的大多數情況下用於距離計算的代碼都適用。

define('gmaps', ['goog!maps,3.9,language:de,other_params:libraries=geometry&sensor=false&channel=...&client=...'], 
function(){ 
    return window.google.maps; 
}); 
3

看來你不加載正確的庫:我改變我的gmaps模塊的定義呼叫解決了這一問題。只需在庫url中追加&libraries=geometry即可。

入住這 google.maps.geometry.spherical error

+0

我有兩個頁面,這兩個追加「?庫=幾何」的網址...他們的作品之一,另一個總是拋出此錯誤。拋出錯誤的那個缺少「&sensor = 」。我補充說,它開始工作。 (我認爲傳感器=被折舊!) – Michael