d3.js - 使用 D3 操作 Google GeoChart SVG

标签 d3.js google-visualization

我正在使用 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的矩形。然后,我继续仅选择要删除的第三个矩形。控制台日志给了我这个:[Array[0]],它应该是选定的矩形。 然而什么也没有发生。如果我使用: var svg1 = d3.select("svg").selectAll("rect").remove() ,我可以删除所有矩形,但不能删除特定的矩形。 我做错了什么或者 Google GeoChart 不允许这种类型的操作吗?谢谢。

最佳答案

根据 selectAll() 的返回值(据我从 D3 文档了解是一个数组),问题在于您使用 filter() 来选择要删除的元素,而不是导航数组。

此外,您可能会发现有用的 this blog article解释如何使用 selectAll() 和其他 D3 功能来使用所选元素。

关于d3.js - 使用 D3 操作 Google GeoChart SVG,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13027795/

相关文章:

javascript - Google Chart API 缺乏数据和注释

javascript - 在我的 React.js 应用程序中导入 D3.js 库时出错

javascript - 防止 Google Charts 在图表标题中转义撇号

javascript - 将加载图像与 jQuery 和 Google Visualization 集成

d3.js - 带点的 D3 条形图背景

google-visualization - 获取 Google Charts 直方图条形图或条形图范围的数据项

google-visualization - Google Charts "select"事件多次触发

javascript - D3 JS图表在添加X和Y轴标签后被切断

javascript - 映射到 d3 中的序数刻度时如何计算闰年?

javascript - 如何从元素获取 JSON 路径