Suj*_*dke 4 javascript charts undefined google-visualization
我正在使用 Google Geocharts 并按照 Google 的文档(https://developers.google.com/chart/interactive/docs/gallery/geochart?hl=en)来设置这样的图表:
google.charts.load('current', {'packages':['geochart']});
google.setOnLoadCallback(drawRegionsMap);
function drawRegionsMap() {
...
var data = google.visualization.arrayToDataTable(a1);
var options = {};
var chart = new google.visualization.GeoChart(document.getElementById('div_geochart'));
chart.draw(data, options);
};
Run Code Online (Sandbox Code Playgroud)
数组a1是全局定义的。脚本包含行出现在标题中。问题是,有时,我收到一条错误消息:
Uncaught TypeError: Cannot read property 'arrayToDataTable' of undefined
并且图表未加载。真正的问题是很难查明问题,因为它并不总是发生。似乎有时 google.visualization 尚未设置?但是使用setOnLoadCallback调用drawRegionsMap的全部意义不就是在 google.visualization 成功设置后调用它吗?
我确实尝试更改setOnLoadCallback行的位置,如下所述:Google Visualization - TypeError: Cannot read property 'DataTable' of undefined [Chrome specific]。我还将这两行放在<head>页面的部分中,但有时仍然会出现错误(在 Chrome 和 IE 中测试)。
有人可以给我一些关于如何避免出现此错误的提示吗?
请注意, google.setOnLoadCallback 与 google 不同。图表.setOnLoadCallback。如果您使用 google.charts.load(),则还需要使用 google.charts.setOnLoadCallback()。他们一起去。
此外,由于您使用的是 GeoChart,您可能仍需要加载 jsapi 加载器,该加载器用于通过 Google 地图加载地理编码数据。但是,对于最新版本,这不再适用,但如果您使用的是旧版本,则仍然适用。所以你的文档应该是这样的:
<script type="text/javascript" src="https://www.gstatic.com/charts/loader.js"></script>
<script type="text/javascript" src="https://www.google.com/jsapi"></script>
<script type="text/javascript">
google.charts.load('current', {'packages':['geochart']});
google.charts.setOnLoadCallback(drawSomeGeoChart);
function drawSomeGeoChart() {
...
}
</script>
Run Code Online (Sandbox Code Playgroud)