You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何实现AmCharts 5地图中飞机仅从起点飞往终点的动画

AmCharts 5 实现飞机单向飞行(巴黎→洛杉矶)方案

要实现飞机从巴黎单向飞往洛杉矶、不掉头返回的效果,只需调整动画配置与逻辑,以下是两种实用方案:

方案一:单次飞行,抵达终点后停止

原代码中动画使用了yoyo缓动函数与无限循环,导致飞机往返飞行。我们只需修改动画参数,去掉折返逻辑:

// 替换原飞机动画代码
planeDataItem.animate({
  key: "positionOnLine",
  to: 1,
  duration: 10000,
  loops: 1, // 仅执行一次飞行
  easing: am5.ease.linear // 移除yoyo缓动,保持单向匀速
});

// 删除原有的positionOnLine监听代码(无需再处理掉头旋转)
// planeDataItem.on("positionOnLine", function(value) { ... });

修改后,飞机会从巴黎出发,10秒后抵达洛杉矶并停止,不会返回起点。

方案二:循环单向飞行(抵达后重置起点再出发)

如果需要飞机持续执行巴黎→洛杉矶的单向飞行,可在动画结束后重置飞机位置并重新启动动画:

// 定义飞行动画函数
function startFlight() {
  planeDataItem.set("positionOnLine", 0); // 将飞机重置到巴黎起点
  planeDataItem.animate({
    key: "positionOnLine",
    to: 1,
    duration: 10000,
    easing: am5.ease.linear,
    done: function() {
      setTimeout(startFlight, 1000); // 抵达后延迟1秒再次起飞(可根据需求调整或删除)
    }
  });
}

// 启动首次飞行
startFlight();

// 删除原有的positionOnLine监听代码

此方案下,飞机抵达洛杉矶后会重置到巴黎,再次起飞,全程保持单向飞行状态,不会出现掉头动作。

补充说明

原代码中遗漏了planeSeries的定义,需确保添加以下代码(在创建飞机图形前):

// 创建承载飞机的点系列
var planeSeries = chart.series.push(am5map.MapPointSeries.new(root, {}));

内容的提问来源于stack exchange,提问作者codeblazor

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 16:50:45