2017-03-03 60 views
0

我正在製作一個通過JSON中的REST API加載一些區域亮點的地圖。這個JSON非常大,所以我想在地圖上加載一個加載屏幕,直到API調用返回。我試過了:Google Maps API - 用於API/JSON加載的事件偵聽器?

document.getElementById('spinner').style.visibility = "visible"; 
map.data.loadGeoJson(mapurl); 
document.getElementById('spinner').style.visibility = "hidden"; 

但是顯然加載是異步發生的,所以這沒有實現。

二審:

document.getElementById('spinner').style.visibility = "visible"; 
map.data.loadGeoJson(mapurl); 
    google.maps.event.addListener(map, 'idle', function(){ 
     document.getElementById('spinner').style.visibility = "hidden"; 
}) 

這是好多了,現在我有一個載入畫面,然而,idle獲取地圖加載後立即調用,而不是JSON。有沒有一種方法可以偵聽JSON文件被完全加載/ API調用返回的事件?

+1

'loadGeoJson'接受一個可選的回調將被解僱一旦所有的功能都裝載,即'map.data.loadGeoJson(mapurl,回調) '。所以,把你的回調放在那裏。 –

回答

0

我不明白他們想做什麼,我假設在加載地圖後我想要一個ajax查詢,這樣做是爲了聲明一個函數(init)並添加到google maps標記中作爲回調,像這樣:

<script src="https://maps.googleapis.com/maps/api/js?key=YOUR_API_KEY&callback=init" async defer></script> 

你的函數:

function init(){ 
    // Load ajax 
} 
+0

我已經找到了解決方案(與AJAX沒有多大關係),所以我將問題標記爲重複。 –