我正在使用 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}
});
}
我的问题是单击复选框与地图上显示的数据之间存在很大差距。我希望能够以某种方式监听事件,以便我可以
- 当用户单击复选框时显示加载 div 元素
- 当 layer.setOptions 返回隐藏正在加载的 div 元素。
我了解如何使用 div 进行 DOM 工作,但我似乎无法找到一种判断查询是否已从 fusiontable 查找返回的好方法(有时可能需要 1-2 秒)