2014-11-23 161 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