Google maps api 3 Google Maps API:数据层渲染完成事件

Google maps api 3 Google Maps API:数据层渲染完成事件,google-maps-api-3,geojson,Google Maps Api 3,Geojson,我正在使用谷歌地图API在地图上显示我的多边形数据。数据以geoJson格式显示,文件大小为2Mb。这就是我将数据添加到图层的方式 var parcelLayer = new google.maps.Data(); parcelLayer.addGeoJson(geoJsonObject); 一切正常 但我面临的问题是;数据文件大小足够大,即大约2Mb,在地图上渲染需要5-10秒,因此我需要在地图上渲染数据时添加加载程序 我找不到在贴图数据完成渲染后触发的事件,也找不到在这种情况下有帮助的技巧

我正在使用谷歌地图API在地图上显示我的多边形数据。数据以geoJson格式显示,文件大小为2Mb。这就是我将数据添加到图层的方式

var parcelLayer = new google.maps.Data();
parcelLayer.addGeoJson(geoJsonObject);
一切正常

但我面临的问题是;数据文件大小足够大,即大约2Mb,在地图上渲染需要5-10秒,因此我需要在地图上渲染数据时添加加载程序

我找不到在贴图数据完成渲染后触发的事件,也找不到在这种情况下有帮助的技巧。我在谷歌上搜索了很多,也查看了这个网站的相关链接,但运气不好

已编辑

我尝试了下面的
addfeature
事件

            count=0;
            parcelLayer.addListener('addfeature', function() {
                count+=1;
                if (count==geoJsonObject.features.length){
                    console.log('all rendered');
                }
            });
但是
控制台
在层完成渲染之前就响应了。

为什么不使用

google.maps.event.addListenerOnce(map, 'idle', function(){
    // you can put your layer code for data is present is in geoJson      format here
});

“空闲”事件在地图完全加载时触发,这意味着它处于空闲状态。

我刚刚遇到了相同的问题,并且能够成功地遵循@AniV的建议

但我想补充一个细节,这是我困惑的根源。Google Maps API允许您通过以下两种方式之一加载GeoJSON数据:

1)
loadGeoJson
:它将URL路径作为参数,并通过GET请求将JSON拉入该URL。服务器的JSON响应(假设遵循正确的GeoJSON格式)将添加到映射中

2)
addGeoJson
:这就是您在上面使用的内容。它将JSON本身作为参数并将其添加到映射中

这就是我被绊倒的地方:我最近从使用
loadGeoJson
切换到使用
addGeoJson
,事实证明,事件侦听器
addfeature
对这两种方法的工作方式并不相同

对于
loadGeoJson
,在我看来,服务器返回的所有功能都会立即添加,这样事件侦听器
addfeature
会在添加**all*标记后激发。但是对于
addGeoJson
,功能似乎一次添加一个,这样
addfeature
侦听器在添加所有标记之前启动(或者根本不启动?我不知道是哪种情况),因此代码块不会执行


为了解决这个问题,我成功地使用了@AniV的答案。但我想提供这些附加信息,以防从
loadGeoJson
切换到
addGeoJson
的人遇到与我相同的问题。

您尝试过该事件吗?您可能需要计算GeoJSON中的功能,才能知道最后一个功能是何时添加的。但是addfeature对所有特性的响应出现了,并且图层仍在渲染中。问题中添加了一个示例。您的意思是我需要在上述功能中启动该层?如果整个层都有您只想在地图加载完成时公开的功能,则为“是”!!此操作触发时,贴图仍在渲染。