TypeError: google.визуализация.DataTable не является конструктором
На моей веб-странице есть карта google, а также три диаграммы. Когда страница загружается, карта в порядке, но диаграммы либо не загружаются, либо загружаются только одна или две. Продолжайте получать ошибку TypeError: google.визуализация.DataTable не является конструктором.
function load() {
//map object
var MY_MAP = new google.maps.Map(document.getElementById("map"), {
center: {lat: 54.870902, lng: -6.300565},
zoom: 14
});
//call to get and process data
downloadUrl("Map.php", processXML);
}
// Load the Visualization API and the piechart package.
google.load('visualization', '1.0', {'packages':['corechart']});
// Set a callback to run when the Google Visualization API is loaded.
google.setOnLoadCallback(drawAltitudeChart());
google.setOnLoadCallback(drawDisplacementChart());
google.setOnLoadCallback(drawDistanceChart());
function drawAltitudeChart(){
//console.log('hello');
var graph = [];
downloadUrl("Map.php", function (data){
var xml = data.responseXML;
var markers = xml.documentElement.getElementsByTagName("marker");
var dataTable = new google.visualization.DataTable();
var options = {title:'Altitude (m above sea level)',
curveType:'function',
legend:{position:'bottom'},
is3d:true
};
var chart;
for(var i = 0; i<markers.length; i++){
graph[i] = ['', parseInt(markers[i].getAttribute("alt"))];
}
dataTable.addColumn('string', 'id');
dataTable.addColumn('number', 'Altitude');
dataTable.addRows(graph);
chart = new google.visualization.LineChart(document.getElementById('curve_chart'));
chart.draw(dataTable, options);
});
}
2 ответа:
Я не думаю, что вы можете добавить больше одного обратного вызова, как это.
Кроме того, вы можете определить обратный вызов в методе
load
, например...google.load('visualization', '1.0', {'packages':['corechart'], 'callback': drawCharts}); function drawCharts() { drawAltitudeChart(); drawDisplacementChart(); drawDistanceChart(); }
EDIT
Приведенное выше утверждение
load
предназначено для более старой библиотеки...
<script src="http://www.google.com/jsapi"></script>
Согласно примечаниям к выпуску ...
Версия Google Charts, которая остается доступной через загрузчикjsapi
, больше не обновляется последовательно. Пожалуйста теперь используйте новый загрузчик gstatic.С помощью библиотекиnew ...
<script src="https://www.gstatic.com/charts/loader.js"></script>
Изменяет оператор
load
на...google.charts.load('current', {'packages': ['corechart'], 'callback': drawCharts});
EDIT 2
Вы также можете загрузить все необходимые пакеты в одном операторе
load
, например
вместо...google.charts.load('current', { 'packages': ['table'] }); google.charts.load('current', { 'packages': ['bar'] }); google.charts.load('current', { 'packages': ['pie'] }); // <-- 'pie' package does not exist google.charts.load('current', { 'packages': ['corechart'] }); google.charts.setOnLoadCallback(drawCharts);
Так и должно быть...
google.charts.load('current', { callback: drawCharts, packages: ['bar', 'corechart', 'table'] });