Javascript 使用d3如何在我的地球仪动画上创建平滑过渡?

Javascript 使用d3如何在我的地球仪动画上创建平滑过渡?,javascript,d3.js,Javascript,D3.js,我正在使用D3.js、Javascript,特别是函数D3.geoporthographic来创建地球仪 我已经创建了一个地球仪,现在我正试图将它旋转到某些国家。 e、 g.从“英国”开始,然后轮换到“中国” 我每隔一段时间做这件事 d3.interval( () => { projection.rotate(coOrdinates) path = d3.geoPath().projection(projection) map.selectAll("pa

我正在使用D3.js、Javascript,特别是函数
D3.geoporthographic
来创建地球仪

我已经创建了一个地球仪,现在我正试图将它旋转到某些国家。 e、 g.从“英国”开始,然后轮换到“中国”

我每隔一段时间做这件事

d3.interval( () => {
    projection.rotate(coOrdinates)

    path = d3.geoPath().projection(projection)
    map.selectAll("path")
      .attr("d", path)
})
它的工作,这是伟大的,但过渡到该国是即时的,它不是平稳的


如何包括到每个国家/地区的平稳过渡?

您可以创建过渡和
tween
之间的
rotate
属性,包括:

其中,
是旋转的起点

d3.transition()
  .duration(1000)
  .tween("rotate", function() {
    const r = d3.interpolate(point, coOrdinates);
    return function(t) {
      projection.rotate(r(t));
    };
  })