当我在同一页面上加载Google Analytics嵌入API和Google Charts时,似乎存在冲突,更具体地说,当我使用Embed API绘制图表时也是如此。
为了使它更有趣,问题只发生在图表类型不同的情况下,例如嵌入API:TABLE和Charts:LINE
首先加载嵌入API图表并按预期工作。 图表LINE图表第二次加载并返回此错误:
您使用错误的数据类型而不是DataTable或DataView
调用了draw()方法
我感觉Embed API图表覆盖了这个功能:
google.charts.load('current', {
packages: ['corechart', 'line', 'table']
});
更新
回答这个问题:Google Charts draw() method wrong type when given DataTable建议删除对http://www.google.com/jsapi
的引用,但Google嵌入API图表停止工作,因为window.google.load
不再定义,而是window.google.charts.load
这是Google Charts所需要的,但似乎没有工作嵌入API图表。
答案 0 :(得分:1)
我遇到了同样的问题并修复了脚本加载冲突。 解决方案是仅包含较新的图表加载器。
<script type="text/javascript" src="https://www.gstatic.com/charts/loader.js"></script>
然后,在加载google chart api之前,请运行额外的代码suggested by Daniel LaLiberte:
//Handles differences in load functions
google.load = google.load || google.charts.load;
google.setOnLoadCallback = google.setOnLoadCallback || google.charts.setOnLoadCallback;
//Loads the google analytics API
(function (w, d, s, g, js, fs) {
//if ($('#googleCache').length > 0) return;
g = w.gapi || (w.gapi = {});
g.analytics = {
q: [],
ready: function (f) {
this.q.push(f);
}
};
js = d.createElement(s);
fs = d.getElementsByTagName(s)[0];
js.src = 'https://apis.google.com/js/platform.js';
js.id = "googleCache";
fs.parentNode.insertBefore(js, fs);
js.onload = function () {
g.load('analytics');
};
}(window, document, 'script'));
//Load the charts you want
google.charts.load('current', { packages: ['corechart', 'table', 'line', 'geochart'] });