2017-05-30 98 views
1

在谷歌地圖API,我想創建一個信息窗口,每次我留下一個標記(標記全部存放在數組)。
當聲明信息窗口:「沒有定義谷歌」錯誤 - 嘗試建立信息窗口谷歌地圖

var infowindow = new google.maps.InfoWindow(); 

我得到'沒有定義谷歌的錯誤。

這只是如果我搬到這條線的創建標記在函數內部的代碼將停止,但隨後我將創建變量信息窗口每次我放在一個標誌,我知道是不好的做法?

我寧願在我的JS開始申報信息窗口,然後只是用它每次的標誌放置。
我無法找到任何東西,從其他的答案幫助上是這樣,我已經試過重新排序的JS文件,但沒有爲到目前爲止的工作。

任何提示將受到歡迎

回答

1

這是因爲谷歌地圖是異步加載您在調用該行的谷歌地圖API的加載之前。

這是怎麼要等到它的加載:

<!-- include this snippet anywhere --> 
<script> 
    var infoWindow; 
    function initMap() { 
    infoWindow = new google.maps.InfoWindow(); 
    } 
</script> 

<!-- include this script in your footer...or anywhere really --> 
<script src="https://maps.googleapis.com/maps/api/js?key=YOUR_API_KEY&callback=initMap" async defer></script> 

舉例來說,如果你試圖做這樣的事情:

<script> 
    var infoWindow = new google.maps.InfoWindow(); 
</script> 
<script src="https://maps.googleapis.com/maps/api/js key=YOUR_API_KEY&callback=initMap" async defer></script> 

然後你會得到一個錯誤,因爲google會由於API尚未加載而執行var infoWindow = ...時未定義。

您只能回調(例如initMap)後使用任何google.maps.XXX類已被執行

+0

這是偉大的不能相信我沒想到它,謝謝。 –

-1

我已經看到了很多的「沒有定義谷歌的時間。我認爲Google Script在FF插件上存在問題。 FF有重新啓動選項,請嘗試使用幫助>重新啓動,並使用附加組件禁用。 :)

+0

我聽說也,但是這不是在任何瀏覽器爲我工作! –