Возможно ли иметь несколько графиков Google на одной странице?

Я использую визуализацию Google api. Ниже приведен пример кода. Любая из двух диаграмм может быть показана, если она будет только одна. Но я не могу заставить обоих работать. Спасибо за ваш совет.

<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"></meta>
        <title>Home Page</title>
        <!--Load the AJAX API-->
        <script type="text/javascript" src="http://www.google.com/jsapi"></script>
        <script type="text/javascript">
            //Load the Visualization API and the ready-made Google table visualization
            google.load('visualization', '1', {'packages':['corechart']});
        </script>

        <script type='text/javascript'>

            function drawA() {
                // Define the chart using setters:
                var wrap = new google.visualization.ChartWrapper();
                wrap.setChartType('ColumnChart');
                wrap.setDataSourceUrl('dataurl');
                wrap.setContainerId('checkin-column');
                wrap.setOptions({'title':'Daily Check-in Numbers', 'width':500,'height':400});
                wrap.draw();
                wrap.getChart();
            }

            function drawB() {
                // Define the chart using setters:
                var wrap = new google.visualization.ChartWrapper();
                wrap.setChartType('ColumnChart');
                wrap.setDataSourceUrl('dataurl2');
                wrap.setContainerId('redemption-table');
                wrap.setOptions({'title':'Redemption History', 'width':500,'height':400});
                wrap.draw();
            }



            function drawVisualization() {
               drawA();
                drawB();

            }


            google.setOnLoadCallback(drawVisualization);
        </script>
    </head>
    <body>



        <div id="checkin-column"/>
        <p/>
        <div id="redemption-table"/>

    </body>
</html>

Ответ 1

Проблема в ваших div.

Замените это:

<div id="checkin-column"/>
<p/>
<div id="redemption-table"/>

При этом:

<div id="checkin-column"></div>
<p></p>
<div id="redemption-table"></div>

Ответ 2

Наверное, не ваша проблема, но по соответствующей заметке я обнаружил, что если у вас много визуализаций Google на той же странице (я считаю, что это было около 50), Google будет дросселировать использование и остановить рендеринг.

Ответ 3

Просто выбросив некоторую информацию, связанную с проблемой, которую я имел (а не OP точно Q).

Если вы хотите нарисовать несколько диаграмм на одной странице, вы должны использовать разные идентификаторы для divs вашего таргетинга (duh!). Поэтому, если у вас есть страница, которая должна иметь несколько диаграмм, но только 1 (или N < ожидаемый) - рендеринг, дважды проверьте, что для каждого графика есть уникальный идентификатор div, а JavaScript нацелен на уникальный идентификатор div.

Например, следующее будет отображать только одну диаграмму:

<div id="chart"></div>
<script type="text/javascript" src="http://www.google.com/jsapi"></script>
<script type="text/javascript">
    google.load('visualization', '1', {packages: ['corechart']});
    google.setOnLoadCallback(drawChart);
    google.setOnLoadCallback(drawChart2);

    function drawChart() {
        var data = google.visualization.arrayToDataTable([
            ['', 'Stuff', 'Stuff2'],
            ['', 1.0, 2.0]
        ]);

        var options = {
            title: 'MyChart',
            pointSize: 3,
            vAxis: {
                baseline: 0.1,
                title: 'vAxis'
            },
            hAxis: {
                title: 'hAxis'
            }
        };
        var chart = new google.visualization.ColumnChart(document.getElementById('chart'));
        chart.draw(data, options);
    }

        function drawChart2() {
            var data = google.visualization.arrayToDataTable([
                ['', 'Stuff', 'Stuff2'],
                ['', 4.0, 5.0]
            ]);

            var options = {
                title: 'MyChart2',
                pointSize: 3,
                vAxis: {
                    baseline: 0.1,
                    title: 'vAxis'
                },
                hAxis: {
                    title: 'hAxis'
                }
            };
            var chart = new google.visualization.ColumnChart(document.getElementById('chart'));
            chart.draw(data, options);
        }
    </script>