首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Google :数据层呈现完整事件

Google :数据层呈现完整事件
EN

Stack Overflow用户
提问于 2015-03-31 14:40:32
回答 2查看 1.9K关注 0票数 0

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

代码语言:javascript
复制
var parcelLayer = new google.maps.Data();
parcelLayer.addGeoJson(geoJsonObject);

一切都很好。

但是我面临的问题是:数据文件的大小足够大,大约2Mb,在地图上渲染需要5-10秒,所以我需要在地图上显示数据时添加一个加载程序。

我找不到这样的事件,在地图数据完成呈现后触发,或者在这种情况下可能有帮助的任何技巧。我在Google上搜索了很多,也查过这个网站的相关链接,但是没有运气。

编辑的

我尝试过addfeature事件,如下所示

代码语言:javascript
复制
            count=0;
            parcelLayer.addListener('addfeature', function() {
                count+=1;
                if (count==geoJsonObject.features.length){
                    console.log('all rendered');
                }
            });

但是console在图层完成渲染之前就做出了响应。

EN

回答 2

Stack Overflow用户

发布于 2015-04-02 00:14:08

你为什么不用

代码语言:javascript
复制
google.maps.event.addListenerOnce(map, 'idle', function(){
    // you can put your layer code for data is present is in geoJson      format here
});

“空闲”事件是在地图完全加载时触发的,这意味着它是空闲的。

票数 1
EN

Stack Overflow用户

发布于 2015-08-12 03:45:13

我只是遇到了同样的问题,并成功地遵循了@AniV的建议。

但我想再加一个细节,这是我困惑的根源。允许您以两种方式之一加载GeoJSON数据:

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

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

这就是我被绊倒的地方:我最近从使用loadGeoJson转向使用addGeoJson,而事实证明,事件侦听器addfeature对这两种方法的not的工作方式都是相同的。

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

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29371369

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档