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

请求提供mapdeck地图相机位置/俯仰角动画及导出实现代码

Mapdeck相机角度动画实现与导出

核心实现代码(匹配官网Grid示例动画)

首先安装并加载所需工具包:

install.packages(c("mapdeck", "htmlwidgets", "webshot2"))
library(mapdeck)
library(htmlwidgets)
library(webshot2)

设置Mapbox访问令牌(mapdeck依赖Mapbox服务,需自行申请):

set_token("YOUR_MAPBOX_ACCESS_TOKEN") # 替换为你的令牌

创建带相机过渡动画的网格地图:

# 使用官网示例的墨尔本网格数据
grid_data <- melbourne_grid

# 构建地图并配置相机动画
animated_map <- mapdeck(style = mapdeck_style("dark")) %>%
  add_grid(
    data = grid_data,
    lat = "lat",
    lon = "lon",
    cell_size = 500,
    elevation_scale = 50,
    colour_range = viridis::viridis(5)
  ) %>%
  # 配置相机从初始状态平滑过渡到目标状态
  mapdeck_view(
    # 初始相机参数
    location = c(144.9631, -37.8140),
    zoom = 12,
    pitch = 0,
    # 动画核心配置
    duration = 4000, # 动画时长(4000毫秒=4秒)
    transition = "ease-in-out", # 平滑过渡效果
    # 目标相机参数(对应官网示例的俯仰+缩放效果)
    target_location = c(144.9631, -37.8140),
    target_zoom = 14,
    target_pitch = 60
  )

# 保存为可交互HTML文件(RStudio Viewer可能无法完整渲染动画,建议在浏览器打开)
saveWidget(animated_map, "grid_camera_animation.html", selfcontained = TRUE)

导出为GIF/MP4

导出为GIF

webshot(
  url = "grid_camera_animation.html",
  file = "grid_animation.gif",
  delay = 0.5, # 等待动画启动的延迟时间
  vwidth = 800,
  vheight = 600,
  fps = 10 # 控制GIF流畅度
)

导出为MP4

需先安装系统级工具ffmpeg(自行下载安装并添加到环境变量),再执行:

# 捕获动画帧为PNG序列
webshot(
  url = "grid_camera_animation.html",
  file = "frame_%03d.png",
  delay = 0.1,
  vwidth = 800,
  vheight = 600,
  fps = 20
)

# 用ffmpeg合并为MP4
system("ffmpeg -framerate 20 -i frame_%03d.png -c:v libx264 -r 20 -pix_fmt yuv420p grid_animation.mp4")

常见问题解决

  • 动画在RStudio Viewer不显示:将HTML文件拖到Chrome/Firefox等浏览器中查看,Viewer对部分JS动画支持有限
  • duration参数不生效:需同时设置target_*系列参数,动画需要明确的起始和目标状态
  • 导出失败:检查webshot2是否正确安装(可运行webshot::install_phantomjs()或确保Chrome可用),ffmpeg需添加到系统环境变量

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 13:41:01