2014-11-23 306 views
1

我正在使用google maps api v3创建一个图层,并在用户请求后加载一些图层。该层使用GeoJSON格式导出下面Fininshed渲染图层事件

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个多边形大致与简单的几何形状(几乎全部都是矩形形状)的代码加载,大约需要5秒至在完全呈现地图。我想在渲染图层时使用加载器指示器,因此我使用两种功能

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

启动和停止指示器。问题是我无法检测渲染何时完成。我曾尝试

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

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

其他用户建议,但没有奏效。这实际上可能吗?有没有其他方法可以绕过这个问题?

预先感谢您

回答

1

一种可能的方法可能是:

  1. 负载通过AJAX的JSON而不是loadGeoJson
  2. 获得所请求的JSON特征的数量,并将其存储在一个变量
  3. 观察addfeature - 图层的事件(细节在最后)
  4. 通过将图层添加到图层

addfeature -handler你可以递减的特征(步骤2)存储的号码,当它的0已添加的所有功能。

+0

我刚刚添加了proplayer.addListener('addfeature',function(){ajaxindicatorstop();}); getgeojson函数中的\t并且像魅力一样工作。我会进一步调查你提出的解决方案,但现在一切似乎都正常。非常感谢你。 – geoandri 2014-11-23 11:23:20