javascript - D3 数据图 : Pass additional values related to data on click of country

标签 javascript d3.js datamaps

我正在使用mark's maps用于绘制图表。我想提醒与国家/地区相关的其他值,而不仅仅是国家/地区名称。但 onClick 函数中只有地理对象可用。如何访问其他数据,例如

'numberOfThings'

onClick函数内部?

提前致谢。

最佳答案

要设置点击处理程序,您需要使用数据映射的 done 回调。在点击处理程序中,您可以使用地理对象中的 id 来引用 map.options.data 对象来查找相关数据。

一个工作示例,其中只有美国有一些额外的数据,如下所示:

map = new Datamap({
    scope: 'world',
    element: document.getElementById('container1'),
    projection: 'mercator',
    height: 500,
    fills: {
      defaultFill: '#f0af0a',
      lt50: 'rgba(0,244,244,0.9)',
      gt50: 'red'
    },

    data: {
      USA: {fillKey: 'lt50', numberOfThings: 120132 },
      RUS: {fillKey: 'lt50' },
      CAN: {fillKey: 'lt50' },
      BRA: {fillKey: 'gt50' },
      ARG: {fillKey: 'gt50'},
      COL: {fillKey: 'gt50' },
      AUS: {fillKey: 'gt50' },
      ZAF: {fillKey: 'gt50' },
      MAD: {fillKey: 'gt50' }       
    },

    done: function(map) {

      map.svg.selectAll('.datamaps-subunit').on('click', function(geo) {
        var localData = map.options.data[geo.id]
        if ( localData && localData.numberOfThings ) {
          alert(localData.numberOfThings)
        }
      })
    }
  })

演示链接:http://jsbin.com/nigifuyeqe/1/edit?html,output

关于javascript - D3 数据图 : Pass additional values related to data on click of country,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35289619/

相关文章:

javascript - React Native 边框宽度 6s Plus

javascript - 这是检查 URL 是否引用 JS/jQuery 中的图像的有效测试吗

javascript - 鼠标滚轮缩放 map - DataMaps.js

javascript - D3 数据图数据结构(多年,所有国家)

javascript - 新对象或新对象()

javascript - AngularJS - 预加载应用程序设置

javascript - d3 中按时间间隔对日志文件数据进行分组

javascript - 在 d3 和弦图中焦点移出时禁用布局重置

javascript - 删除 svg 矩形绘制行中的魔数(Magic Number)

d3.js - D3 的美国邮政编码 TOPOJson