完成渲染层事件

时间:2014-11-23 07:01:42

标签: javascript google-maps-api-3 geojson

我正在使用谷歌地图api v3创建一个地图,其中包含几个在用户'之后加载的图层。请求。使用Geojson格式加载图层,代码如下

function getgeojson(json) 
    {            
        proplayer = new google.maps.Data();
        proplayer.loadGeoJson('../public/geoprop/index');
        proplayer.setStyle({  
                               fillColor: 'red',
                               strokeColor: 'red',
                               fillOpacity: 0.3,
                               strokeWeight: 1
                            });
         proplayer.setMap(map);                 
         proplayer.addListener('mouseover', function(event) {                                   
                                infoWindow.setContent(event.feature.getProperty('kta'));
                                infoWindow.setPosition(event.latLng);
                                infoWindow.open(map);
                            });     

    }

这些图层由3.5 K多边形组成,大致具有简单的几何形状(几乎所有这些都是矩形),并且在地图中完全渲染需要大约5秒。我想在渲染图层时使用加载器指示器,因此我使用了两个函数

ajaxindicatorstart('loading data.. please wait..');
ajaxindicatorstop();

启动和停止指标。问题是我无法检测渲染何时完成。我试过了

proplayer.addListener( 'metadata_changed', function () {ajaxindicatorstop();}); 

google.maps.event.addListener(map, 'idle', function() {
                                            ajaxindicatorstop();
                            }); 

其他用户建议,但它没有工作。这有可能吗?有没有其他方法可以绕过这个问题?

提前谢谢

1 个答案:

答案 0 :(得分:1)

可能的方法可能是:

  1. 通过AJAX而不是loadGeoJson
  2. 加载JSON
  3. 获取请求的JSON中的功能数量并将其存储在变量
  4. 观察addfeature - 图层事件(最后的详细信息)
  5. 通过addGeoJson
  6. 将功能添加到图层

    addfeature - 处理程序中,当0添加了所有要素时,您可以减少存储的要素数量(步骤2)。