2

GoogleのGeoChart(https://google-developers.appspot.com/chart/interactive/docs/gallery/geochart)を使用しています。D3を使用していくつかの要素を変更しようとしています。私は以下のように彼らのコードを使用しました:

google.load('visualization', '1', {'packages': ['geochart']});
//google.setOnLoadCallback(drawMarkersMap);

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

    var options = {
        displayMode: 'markers'
    };

    var chart = new google.visualization.GeoChart(document.getElementById('chart_div'));
    chart.draw(data, options);

    window.setTimeout(function() {        
        var svg1 = d3.select("svg").selectAll("rect")
            .filter(":nth-child(2)")
            .remove();
        console.log(svg1);
    }, 2000);

};

別の関数からdrawMarkersMap()を呼び出していますが、タイムアウトによってsvgのrectsのみが選択されます。次に、削除したい3番目の四角形のみを選択します。コンソールログには、[Array [0]]が表示されます。これは、必要に応じて選択されたrectです。しかし、何も起こりません。var svg1 = d3.select( "svg")。selectAll( "rect")。remove()を使用すると、すべてのrectを削除できますが、特定のrectは削除できません。私は何か間違ったことをしていますか、それともGoogle GeoChartはこのタイプの操作を許可していませんか?ありがとうございました。

4

1 に答える 1

2

selectAll()の戻り値(D3のドキュメントから理解できる限り、配列である)によると、問題は、配列をナビゲートする代わりに、filter()を使用して削除する要素を選択することです。

また、selectAll()およびその他のD3機能を使用して選択した要素を使用する方法を説明するこのブログ記事が役立つ場合があります。

于 2013-01-23T09:41:26.127 に答える