2012-07-11 56 views
0

我試圖使用Google Maps JavaScript API顯示自定義地圖。特別是,我試圖使用幾個jQuery腳本來顯示它,以允許地圖的旋轉。我不確定這部分是否相關。Google Maps Javascript API「未捕獲類型異常 - 未定義不是函數」

當使用標準Google Map數據(即地球貼圖)運行代碼時,它可以正常工作。所以這裏是我的地圖創建代碼:

 // Standard google map 
    var map = new google.maps.Map2(document.getElementById('map')); 
    map.setCenter(new google.maps.LatLng(37.4419, -122.1419), 13); 

這工作正常。但是,當我嘗試使用自定義地圖時,將自己的地圖塊(我已經在另一個項目中實現了,而沒有地圖旋轉)提供給我,我得到「未定義不是函數」。下面是已被添加到使用自定義的瓷磚,而不是標準的谷歌地圖數據的代碼:

google.load("maps", "2.x"); 

var customTypeOptions = { 
     getTileUrl: function (coord, zoom) { 
      var normalizedCoord = getNormalizedCoord(coord, zoom); 
      if (!normalizedCoord) { 
       return null; 
      } 
      var bound = Math.pow(2, zoom); 
      return "http://MYTILESURL/" + zoom + "/" + normalizedCoord.x + "/" + (bound - normalizedCoord.y - 1) + ".jpg"; 
     }, 
     tileSize: new google.maps.Size(256, 256), 
     maxZoom: 3, 
     minZoom: 0, 
     radius: 1024, 
     name: 'custom' 
    }; 

var customMapType = new google.maps.ImageMapType(customTypeOptions); 

,然後在我的初始化()函數:

// Custom map 
    var myLatlng = new google.maps.LatLng(0, 0); 
    var myOptions = { 
    center: myLatlng, 
    zoom: 0, 
    streetViewControl: false, 
    mapTypeControlOptions: { 
    mapTypeIds: ['custom'] 
    } 
}; 

var map = new google.maps.Map(document.getElementById('map'), myOptions); 
map.mapTypes.set('custom', customMapType); 
map.setMapTypeId('custom'); 

我得到的錯誤是顯示「line 46」,在我的代碼中是「tileSize:new google.maps.Size(256,256)」。然而,我不確定這裏報告的46是否與我正在閱讀的46相同,即文件的第46行。

有沒有人有任何想法,爲什麼我得到這個「未定義不是函數」錯誤?

+0

它看起來像你正在異步加載GMap庫,在這種情況下'google.maps.Size'可能不存在你調用它時?如果是這樣,你應該使用第三個參數的'callback'屬性到'google.load'來確保對象的存在。 – Graham 2012-07-11 15:44:27

+0

我有「google.setOnLoadCallback(初始化);」作爲我腳本的最後一行,是否會達到同樣的效果? – breadbin 2012-07-11 15:50:42

+0

是的,但您也需要在該方法內移動'customTypeOptions = ...'代碼。我已經將此添加爲適合您的正確答案。 – Graham 2012-07-11 15:53:05

回答

3

發生這種情況是因爲在GMap庫加載完成之前正在訪問google.maps.Size。只需在初始化函數中移動引用google.maps的任何內容(或使用google.load調用中的回調選項執行相同的操作)。

+0

我沒有得到錯誤,但我的地圖仍然沒有加載:( – breadbin 2012-07-12 09:46:11

+0

如果你不知道爲什麼他們不會加載可能最好問另一個問題。 – Graham 2012-07-12 09:52:44

+0

誠然,無論如何感謝您的意見,很確定這個問題已經解決。 – breadbin 2012-07-12 10:04:48

相關問題