2017-03-03 58 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没有多大关系),所以我将问题标记为重复。 –