2010-08-18 226 views
9

我正在更新一些使用v2 API for Google Maps的舊代碼。在domready中,它會使用像Google Maps API v3 BrowserIsCompatible

if(google.maps.BrowserIsCompatible()){ 
// load the map 
} 

聲明現在,我加載了谷歌地圖API V3,我得到一個錯誤

google.maps.BrowserIsCompatible不是一個函數

我已經閱讀了谷歌v3 api組中的大量主題,但還沒有找到明確的答案,說明新函數的調用方式或如何引用它。

回答

6

GBrowserIsCompatibile沒有把它變成第三版的API,所以你必須要write this code yourself

Here is a list v3支持的瀏覽器。

+0

謝謝cannonade!看起來很奇怪,他們會放棄這一點,但我相信他們有一個很好的理由。 – julio 2010-08-19 03:01:28

+0

@ julio是的,我不確定。他們從v3中刪除了一些不是核心地圖功能的東西(如Http請求封裝器的東西)。我在Google有一個朋友,下次見她時我會問她:)。 – RedBlueThing 2010-08-19 05:12:45

+0

列表不太正確 - ** google api v3似乎可以在IE 6.0中工作。** – TMS 2011-11-23 12:42:42

0

在V3 as of Google's V2 to V3 migration doc中沒有這種方法的等價物。

相反,有效的方式來實現這個測試是:

if (window.JSON) { 
    // load google maps api async (so google.maps object is available for further use) 
} 

這是因爲所有的browsers that Google Maps API V3 support共享相同的特殊性:他們是第一個版本(通過其供應商),其支持JSON本身。 看到這個screenshot taken from caniuse.com

enter image description here

例外:

火狐3.0和BlackBerry瀏覽器6不支持JSON,而是由谷歌地圖API的支持。所以規則上述將排除兩者,這是這樣一個簡單的測試可接受的缺點(相比於用戶代理嗅探基於代碼)

說明:

此測試並不適用於「谷歌.maps'對象,但在腳本加載時。 這可以防止腳本成功加載但「google.maps」對象無法使用的情況(例如IE6)。