Google maps 加载所有PIN后的Google地图事件(api3)

Google maps 加载所有PIN后的Google地图事件(api3),google-maps,google-maps-api-3,Google Maps,Google Maps Api 3,问题很简单。在页面加载时,我有一张没有图钉的地图。地图上有一个控件,允许用户在地图上放置图钉。有时需要放置的管脚数量超过2000个,这是一个需要时间的过程。关于这一点,我的问题是是否存在任何类似jQuerydocument.ready的谷歌地图事件,可以等到所有地图插脚都放在地图上。我需要显示加载覆盖,直到所有引脚都放在地图上,然后隐藏它 就像映射函数一样 window.google.maps.event.addListener(map, 'idle', function () {

问题很简单。在页面加载时,我有一张没有图钉的地图。地图上有一个控件,允许用户在地图上放置图钉。有时需要放置的管脚数量超过2000个,这是一个需要时间的过程。关于这一点,我的问题是是否存在任何类似jQuery
document.ready
的谷歌地图事件,可以等到所有地图插脚都放在地图上。我需要显示加载覆盖,直到所有引脚都放在地图上,然后隐藏它

就像映射函数一样

window.google.maps.event.addListener(map, 'idle', function () {
        // do something
    });

我尝试使用idle,但如果地图不更改缩放,则不会执行此事件(当您在地图上添加PIN时,可能会出现这种情况)。

要回答您的问题,在放置所有PIN时,没有google maps事件。然而,你不需要一个。只需编写代码,以便在加载PIN时按以下顺序执行这些操作:

  • 应用加载覆盖
  • 循环创建所有管脚并将其添加到地图
  • 删除加载覆盖
  • 如果代码对您有更多帮助:

    function loadMyPins(pinDataCollection){
        addMyOverlay();
    
        for(var i=0; i<pinDataCollection.length; i++){
            //create new pin
        }
    
        removeMyOverlay();
    }
    
    函数loadMyPins(pinDataCollection){
    addMyOverlay();
    
    for(var i=0;iConsider读取google地图和在地图上放置管脚是异步的,因此在所有管脚就位之前执行removeMyOverlay();尤其是当您有2000个管脚时)。我尝试了此操作,但没有帮助。如果您放置removeMyOverlay()在异步函数内部,它应该可以工作。您可以发布异步调用的函数以加载标记吗?这可能更容易显示。Google map函数map.setMap()是异步的,而不是我的函数。我只使用java脚本数组中的pin并调用pin[I]。setMap(map)每个标记都在for循环中。只是为了清楚这种情况。我重述一下您发布的代码,以帮助我解决问题。如果您向函数添加brakepoint,则删除覆盖代码效果良好,但在for循环执行后,需要一段时间才能将管脚放置在地图上,然后根据管脚进行聚类和地图拟合(这是在我等待brakepoint时发生的)。这是因为在地图上放置图钉和拟合边界的google地图方法是异步的。如果我删除brakepoint,我的覆盖在地图完全加载之前就隐藏了。