谷歌地图融合图层加载或完成加载时的触发事件?

时间:2013-08-15 08:38:48

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

我正在使用Google Maps Api从融合表中加载大量数据。我正在使用下面的代码将数据作为图层添加到地图中(代码不相关已被省略)

function initialize() {

    var tableId = 'xyxyxyxyxyxyxyxyxy';
    map = new google.maps.Map(document.getElementById('map-canvas'), {
      center: new google.maps.LatLng(51.522416,-0.11673),
      zoom: 9,
      mapTypeId: google.maps.MapTypeId.ROADMAP
    });

   var layer = new google.maps.FusionTablesLayer();

   google.maps.event.addDomListener(
        document.getElementById('checkbox_id'),
        'click', 
        function() { filterMap(layer, tableId, map); }
   );

}

function filterMap(layer, tableId, map, generated) {

   var the_where_query = generate_where()

   layer.setOptions({
     query: {
        select: 'geometry',
        from: tableId,
        where: the_where_query
       },
     options : {suppressInfoWindows:true}
   });
}

我的问题是,点击复选框和地图上显示的数据之间存在很大差距。我希望能够以某种方式倾听一个事件,以便我能够

  1. 当用户点击复选框
  2. 时显示加载div元素
  3. 当返回layer.setOptions时,隐藏加载div元素。
  4. 我理解如何使用div进行DOM工作,我似乎无法找到一个很好的方法来判断查询是否已从fusiontable查找返回(有时可能需要1 - 2秒)

1 个答案:

答案 0 :(得分:0)

如果加载了侦听器,您可以将其捕获。为此创建了status_changed事件。

google.maps.event.addListener(layer, 'status_changed', function() {
 --your code here
});

或者,您可以使用properties_changed事件,该事件将在加载后触发。