我如何确保在使用之前加载我的图表?

时间:2016-09-15 16:33:14

标签: javascript google-visualization

我想在运行其余的javascript之前加载我的谷歌图表。

$(document).ready(function() {
google.charts.load("current", {packages:["corechart"]});

我最初使用此代码以便为图表加载留出一些时间,但有时图表需要的时间比预期的要长,而且我的代码会中断。我可以使用javascript中的初始化函数吗?

setTimeout(function() {
    map.setView([gon.locations[3].latitude, gon.locations[3].longitude - .01],15);
    if(typeof lastMarker !== "undefined")
        map.removeLayer(lastMarker);
    $('progress').animate({value: gon.locations[3].overall_vulnerability}, {duration: 1000});
    $('#vul').html(gon.locations[3].overall_vulnerability);
    var markers = L.mapbox.featureLayer().setGeoJSON(getData(gon.locations[3])).addTo(map);
        google.charts.setOnLoadCallback(drawChart(gon.locations[3]));
    openNav();
    lastMarker = markers;
}, 1500);

2 个答案:

答案 0 :(得分:3)

这就是setOnLoadCallback()函数的用途 - 它在加载完成时运行。

google.charts.load("current", {packages:["corechart"]});
google.charts.setOnLoadCallback(function() {
    // Everything you want to happen after loading goes here
});

来自documentation

  

在使用google.charts.load加载的任何软件包之前,您必须等待加载完成。仅等待文档完成加载是不够的。由于加载完成可能需要一些时间,因此您需要注册一个回调函数。

答案 1 :(得分:0)

您还可以在callback声明中添加load ...

google.charts.load("current", {
  callback: function () {
    // google.charts and google.visualization now available
  },
  packages:["corechart"]
});