0

angularjs アプリがあり、ng-google-chart ディレクティブを使用して、これに Google チャートをプロットします。ここでの問題はこれです: 凡例にグラデーションが表示されない

私は次のコードを使用しています `function drawRegionsMap() {

    var data = google.visualization.arrayToDataTable([
      ['Country', 'Popularity'],
      ['Germany', 200],
      ['United States', 300],
      ['Brazil', 400],
      ['Canada', 500],
      ['France', 600],
      ['RU', 700]
    ]);

      var options = {};

    var chart = new google.visualization.GeoChart(document.getElementById('regions_div'));

    chart.draw(data, options);
  }`

これは、私のアプリではなくフィドルで試してみると完全にうまくいきます。これはあいまいな問題であり、私のアプリに固有のものである可能性があることは承知しています。それでも、誰かが頭のてっぺんから何かを得た場合、または以前にこれを経験したことがある場合は、何かを共有できると非常に役立ちます. 前もって感謝します。

4

2 に答える 2

1

問題は head セクションの<base>タグです。最も簡単な解決策は、それを削除することです。より複雑なもの - コールバック関数を使用して、チャートの準備が整うタイミングを修正します。

<!DOCTYPE html>
<html>
    <head>
        <base href="/">
        <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script>
        <script src="https://www.google.com/jsapi"></script>
    </head>
    <body>
        <div id="chart" style="height:500px;width:900px;"></div>

        <script type="text/javascript">
            google.load("visualization", "1", {
                callback: function () {


                    function fixGoogleCharts(element) {
                        return function () {
                            $(element).find('svg').each(function () {
                                $(this).find("g").each(function () {
                                    if ($(this).attr('clip-path')) {
                                        if ($(this).attr('clip-path').indexOf('url(#') == -1)
                                            return;
                                        $(this).attr('clip-path', 'url(' + document.location + $(this).attr('clip-path').substring(4))
                                    }
                                });
                                $(this).find("rect").each(function () {
                                    if ($(this).attr('fill')) {
                                        if ($(this).attr('fill').indexOf('url(#') == -1)
                                            return;
                                        $(this).attr('fill', 'url(' + document.location + $(this).attr('fill').substring(4))
                                    }
                                });
                            });
                        };
                    }

                    var chartElement = document.getElementById('chart');
                    var data = google.visualization.arrayToDataTable([
                        ['Country', 'Popularity'],
                        ['Germany', 200],
                        ['United States', 300],
                        ['Brazil', 400],
                        ['Canada', 500],
                        ['France', 600],
                        ['RU', 700]
                    ]);
                    var options = {};

                    var chart = new google.visualization.GeoChart(chartElement);
                    // uncomment next string to fix geochart legend gradient
                    //google.visualization.events.addListener(chart, 'ready', fixGoogleCharts(chartElement));
                    chart.draw(data, options);
                },
                packages: ["geochart"]
            });
        </script>
    </body>
</html>

この API の問題はここで議論されています。呼び出す前に必ずイベントリスナーを配置してくださいchart.draw

于 2015-04-25T15:28:55.980 に答える
0

同様の問題がありました。すべて問題ありませんでしたが、色のグラデーションがありませんでした。問題は、Google チャート パッケージが正しく読み込まれていないことでした。これが解決された方法です:

私の .js ファイルの先頭には、次のローダーがありました。

google.load("visualization", "1", {packages:["corechart",  "geochart"]});

これに変更すると、colorAxis が固定されます。

google.charts.load('current', {'packages':['geochart']});
于 2016-03-14T15:36:54.627 に答える