MapLibre GL JS第63课:动画化标记

Spatial-Agent:可执行地理分析工作流引擎 地理智能正从单点API调用迈向系统化空间推理,其核心是将自然语言指令转化为结构化、可验证、可复用的地理分析工作流。这涉及空间关系建模、地理语义解析与多工具协同编排等关键技术,本质是构建具备空间认知能力的推理链而非简单查询。Spatial-Agent 通过空间语义锚定与地理工作流状态机,显著提升复杂场景下的任务召回率与执行成功率,适用于城市规划、物流调度、环境监测等专业领域。它支持PostGIS、MapLibre、Airflow等多后端编译,并以地理语法和空间契约保障跨数据源、跨坐标系的鲁棒性,标志着地理分析 阅读详情

📌 学习目标

  • 掌握动画化标记的实现方法
  • 理解相关API的使用
  • 能够独立完成类似功能开发

MapLibre GL JS 从入门到精通 - 130+实战案例

🎯 核心概念

通过在每帧更新标记位置来动画化标记。

💻 完 整 代 码

<!DOCTYPE html>
<html lang="en">
<head>
    <title>Animate a marker</title>
    <meta property="og:description" content="通过在每一帧更新位置来动画化标记的位置。" />
    <meta property="og:created" content="2006-06-25" />
    <meta charset='utf-8'>
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <link rel='stylesheet' href='https://unpkg.com/maplibre-gl@5.24.0/dist/maplibre-gl.css' />
    <script src='https://unpkg.com/maplibre-gl@5.24.0/dist/maplibre-gl.js'></script>
    <style>
        body { margin: 0; padding: 0; }
        html, body, #map { height: 100%; }
    </style>
</head>
<body>
<div id="map"></div>
<script>
    const map = new maplibregl.Map({
        container: 'map',
        style: 'https://demotiles.maplibre.org/style.json',
        center: [0, 0],
        zoom: 2
    });

    const marker = new maplibregl.Marker();

    function animateMarker(timestamp) {
        const radius = 20;

        // 根据动画时间戳将数据更新到新位置。
        // 表达式 `timestamp / 1000` 中的除数控制动画速度。
        marker.setLngLat([
            Math.cos(timestamp / 1000) * radius,
            Math.sin(timestamp / 1000) * radius
        ]);

        // 确保将其添加到地图。如果已经添加,调用此方法是安全的。
        marker.addTo(map);

        // 请求动画的下一帧。
        requestAnimationFrame(animateMarker);
    }

    // 开始动画。
    requestAnimationFrame(animateMarker);
</script>
</body>
</html>

🔍 代码解析

1. 初始化地图

使用 new maplibregl.Map() 创建地图实例,配置了以赤道为中心的全球视图。

2. 关键配置项

  • requestAnimationFrame: 浏览器原生动画API,实现60fps流畅动画
  • Math.cos/sin: 使用三角函数计算圆形运动轨迹
  • timestamp: 动画时间戳,用于计算当前位置
  • setLngLat(): 更新标记位置

⚙️ 参数说明

参数类型必填说明
radiusnumber是圆形运动半径(度数)
speednumber是动画速度控制(timestamp除数)
timestampnumber是requestAnimationFrame传入的时间戳

🎨 效果说明

在这里插入图片描述

运行代码后,地图显示全球视图,标记以20度为半径围绕地图中心(0, 0)做匀速圆周运动。动画平滑流畅,标记位置每帧更新一次。

💡 常 见 问 题

Q1: 动画不流畅?
A: 检查以下几点:

  1. 确认使用requestAnimationFrame而非setInterval
  2. 减少每一帧的计算复杂度
  3. 避免在动画回调中进行DOM操作

Q2: 如何停止动画?
A: 使用cancelAnimationFrame停止动画:

const animationId = requestAnimationFrame(animateMarker);

// 停止动画
cancelAnimationFrame(animationId);

Q3: 如何实现其他运动轨迹?
A: 修改位置计算逻辑:

// 直线运动
marker.setLngLat([
    startLng + (endLng - startLng) * progress,
    startLat + (endLat - startLat) * progress
]);

// 椭圆运动
marker.setLngLat([
    Math.cos(timestamp / 1000) * radiusX,
    Math.sin(timestamp / 1000) * radiusY
]);

📝 练习任务

  1. 基础练习:修改运动半径和速度,观察动画效果变化
  2. 进阶挑战:实现直线运动动画
  3. 拓展思考:如何实现带缓动效果的动画?
  4. 综合实践:创建一个模拟车辆行驶轨迹的动画

🌟 最佳实践

  1. 动画流畅性: 使用requestAnimationFrame而非setInterval
  2. 性能优化: 避免在动画回调中进行DOM操作和复杂计算
  3. 资源管理: 及时取消不再需要的动画,避免内存泄漏
  4. 帧率控制: 考虑使用时间增量而非固定间隔
  5. 用户体验: 提供开始/暂停控制,允许用户控制动画

🔗 延伸阅读


本文是MapLibre GL JS实践课程系列的一部分,欢迎关注收藏

【AI方案集】个人记忆库型AI智能体终身伴侣方案.docx 这套AI技术方案不走“先堆概念再硬套场景”的老路,而是以业务痛点为锚点,把机器视觉识别、预测性分析、大模型知识赋能等能力拆解成轻量化可落地的功能模块,直接嵌入生产运营的关键环节,既能快速落地见效,又能通过持续的数据迭代逐步放大价值,帮企业在不盲目新增硬件投入的前提下,稳步完成智能化升级,实实在在把AI变成能降本、提效、控风险的生产工具。 立即下载

相关推荐

【能源系统优化】基于MATLAB的光储充一体化多目标调度:光伏自用率与充电成本权衡及储能联合调控 MATLAB 光储充一体化运行优化|光伏自用率与充电成本权衡

内容概要:本文围绕MATLAB实现的光储充一体化系统运行优化展开,旨在通过建立统一的能量调度模型,量化光伏自用率与充电成本之间的权衡关系,提升设备利用效率与运行安全性,并形成可复现的工程分析能力。项目采用多目标混合整数线性规划方法,综合考虑分时电价、储能损耗、光伏消纳与车辆充电需求,在满足功率平衡、储能状态递推、充放电互斥等约束条件下,实现经济性与环保性的协同优化。通过归一化加权目标函数,支持灵活调整运营策略偏好,并利用MATLAB R2025b完成从数据生成、建模求解到结果可视化的完整流程。配套GUI界面支持参数配置、模型训练、结果预测与运行监控,增强了系统的实用性与交互性。 适合人群:具备一定MATLAB编程基础,从事新能源系统规划、电动汽车充电站运营、微电网控制或综合能源管理的技术人员与研究人员,尤其适合工作年限1-3年、希望深入掌握能源系统优化建模与工程实现的研发人员。 使用场景及目标:①优化城市公共充电站、工业园区、高速服务区等场景的光储充协同运行,降低运营成本并提高光伏利用率;②支持日前调度与滚动优化,实现从静态分析到动态调控的升级;③为储能配置、容量规划、需求响应申报及投资回报评估提供量化决策工具;④通过GUI界面实现数据驱动的模型训练与预测,辅助制定最优充放电策略。 阅读建议:此资源以MATLAB为开发平台,强调从理论建模到工程落地的全过程实践。建议读者结合代码示例与GUI操作,理解数据预处理、多目标优化、混合整数求解与结果评价的关键步骤,并通过修改权重参数、运行场景与设备配置进行灵敏度分析,从而全面掌握光储充系统优化的核心逻辑与应用潜力。

MapLibre GL JS地图动画库推荐:从基础到高级动画效果

MapLibre GL JS是一个基于WebGL2技术的交互式矢量瓦片地图库,它允许开发者在网页上创建高性能、视觉吸引力强的动态地图应用。地图动画是提升用户体验的关键元素,无论是展示实时数据变化、引导用户注意力还是增强交互感,都离不开精心设计的动画效果。本文将从基础到高级,全面介绍MapLibre GL JS中的动画实现方式,帮助开发者掌握从简单标记动画到复杂相机路径的完整技能链。 ## 基础动...

gitblog_00759的博客 463

Win 11 Fastboot驱动的详细安装教程

Fastboot驱动的详细安装教程

水w的博客 1万+

MapLibre GL JS地图动画教程:从基础过渡到复杂路径动画

MapLibre GL JS是一款基于WebGL2技术的交互式矢量瓦片地图库,它允许开发者在网页上创建高性能、流畅的地图应用。地图动画是提升用户体验的重要手段,从简单的标记点移动到复杂的路径动画,都能让地图应用更加生动直观。本教程将从基础动画开始,逐步深入到复杂的路径动画实现,帮助你掌握MapLibre GL JS的动画技巧。 ## 基础动画:点标记动画 点标记动画是地图应用中最常见的动画效果...

gitblog_00576的博客 1062

STM32H750实战:用TIM+DMA驱动ADC/DAC实现音频回环(附CubeMX配置避坑指南)

本文详细介绍了在STM32H750上构建高保真、低延迟音频链路的实战方法。通过配置TIM定时器作为硬件节拍器,精准触发ADC采集与DAC播放,并利用DMA实现数据的自动搬运,全程无需CPU干预。文章重点剖析了CubeMX配置中的关键步骤与常见“坑点”,如ADC的Conversion Data Management模式选择、DMA的FIFO与Burst模式配置,以及STM32H7系列必须开启ADC全局中断等,并提供了完整的代码实现与调试验证指南。

1057

Kotlin原生AI Agent框架Koog:为JVM开发者打造类型安全、企业级智能体开发方案

AI Agent作为当前人工智能应用开发的核心范式,通过赋予大语言模型(LLM)自主规划、工具调用和环境交互能力,正在重塑软件智能化进程。其技术原理基于智能体架构,通过提示工程、函数调用和记忆机制,将LLM从单纯的文本生成器转变为能够执行复杂任务的工作流引擎。这一技术价值在于显著降低了构建智能应用的开发门槛,同时保持了高度的灵活性和可扩展性。在实际应用场景中,AI Agent广泛落地于智能客服、代码助手、数据分析自动化等领域,成为连接大模型能力与具体业务需求的关键桥梁。本文聚焦的Koog框架,正是针对JVM

weixin_42594419的博客 396

MapLibre GL JS 从入门到精通 - 130+实战案例

本课程提供MapLibre GL JS的130+实战案例,系统讲解地图开发核心技术。内容涵盖基础地图显示、数据图层处理、样式可视化、交互动画、3D地形等高级功能,以及绘图工具、性能优化等应用。适合前端开发者、GIS工程师等学习,帮助掌握WebGL地图渲染原理,开发各类地图应用。课程包含大量可复用代码示例,从入门到进阶全面覆盖地图开发需求。

专注GIS软件开发。 660

5G NR 帧结构

本节主要介绍5G NR中的帧结构[38.211-4.3]。5G帧结构(Frame Structure)为时域结构。其设计比其4G LTE更为灵活,这种灵活性使5G能够根据应用需求(如增强移动宽带eMBB,超高可靠低时延通信URLLC)进行调整,同时支持差异化的应用场景,提高了5G的利用效率与响应能力。具体而言,5G帧结构是基于时隙和OFDM符号设计的,且5G网络能够根据服务需求动态调整各时隙持续时长。

夫子喵的博客 5286

MapLibre GL JS第46课:用Markers添加自定义图标

使用Markers向地图添加自定义图标。

专注GIS软件开发。 382

为什么传统CNN在视网膜分割中败给Mamba?从血管拓扑学揭秘Serp-Mamba的蛇形扫描黑科技

本文深入分析了传统CNN在视网膜血管分割任务中的局限性,特别是在处理高分辨率图像和复杂血管拓扑结构时。针对这些问题,文章重点介绍了Serp-Mamba模型的核心创新——蛇形交织自适应扫描(SIA)机制,该机制通过让扫描路径自适应地贴合血管曲率,并结合模糊驱动双重校准(ADDR)模块应对极端类别失衡,从而在视网膜血管分割任务上实现了性能的显著突破。

ss78901的博客 895

七自由度机械臂逆运动学实战:从几何简化到KDL库高效求解

本文深入探讨了七自由度机械臂逆运动学求解的实战方法。针对冗余自由度带来的挑战,文章对比了两种核心方案:一是利用任务约束进行几何简化,快速求解特定任务;二是基于DH参数法配置KDL库,实现通用高效的数值迭代求解。文中结合宇树H1机器人实例,详细阐述了从模型解析、参数提取到代码实现与验证的全流程,并提供了几何法与KDL库的适用场景对比与避坑指南。

weixin_29044713的博客 639

PoB2 流放之路2角色规划:从天赋加点到 Build 成型的实操流程

凌晨三点,盯着天赋树第 47 层那颗 +3% 暴击的节点,绕不绕道要算很久。Path of Building PoE2(PoB2)是《流放之路2》的离线角色规划构建工具:玩家先在软件里把路径画出来,每加一颗节点,DPS、生命、能量护盾的数值立刻跟着变,算完再进游戏执行。 ## 规划一条流放之路2 Build 的三种典型场景 ### 为新 Build 规划天赋树路径 情况是:新角色刚选完职业与

gitblog_00146的博客 147

无法将“choco”项识别为 cmdlet、函数、脚本文件或可运行程序的名称的解决方案

本文主要介绍了无法将“choco”项识别为 cmdlet、函数、脚本文件或可运行程序的名称的解决方案,希望能对使用wIndows的同学们有所帮助。 文章目录 1. 问题描述 2. 解决方案

weixin_43178406的博客 12万+

GeoLibre 支持 GIS 数据格式全解:矢量、栅格、云原生格式的解析引擎与平台边界

本文以 GeoLibre 仓库内置的格式支持能力为主线,完整梳理其在矢量、栅格、点云、三维、瓦片服务与云原生地理空间格式上的支持清单,并结合仓库源码印证每种格式背后的读取引擎、关键阈值与平台差异,帮助 WebGIS / GIS 开发者判断「这个文件能不能直接拖进 GeoLibre、在哪个平台、用什么引擎读」。读完你可以得到一份可快速查阅的格式兼容清单,以及一套理解其「引擎无关 store + 多渲

gitblog_00874的博客 310

【AI大模型应用开发实战】大型语言模型评估指南白皮书(LLM Eval)

近年来,大型语言模型(LLM)在自然语言处理领域取得了重大进展,例如 GPT-3 和 Chat-GPT。这些模型经过大型数据集的训练,在文本相关任务中表现出卓越的能力,甚至超越了人类。本文将简要介绍如何验证 LLMs 性能的评估指标。自然语言处理(NLP)是人工智能的一个领域,涉及计算机和人类语言之间的交互。NLP 的基本任务之一是语言建模 (LM),它涉及构建统计模型来分析和生成自然语言。LM 已成为推进机器语言智能的关键方法,使机器能够执行机器翻译、情感分析和对话系统等任务。

AI天才研究院 1015

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

kepler.gl Python 实战指南:用 keplergl 包将地理数据导出为独立交互式 HTML 地图

本篇技术指南以 kepler.gl 开源仓库中的 [skill/SKILL.md](https://link.gitcode.com/i/f92e426daac3471d59bfce0bc4b71da6) 为核心文档骨架,结合仓库内 `bindings/python` 下的 Python 绑定源码与测试用例,系统讲解如何基于 `keplergl` Python 包(`>= 0.4.0`)将 Dat

gitblog_00179的博客 842

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

GeoLibre 源码深度拆解:WebGIS 开发者可直接复用的空间计算、性能与云原生工程实践

本文基于 GeoLibre 开源仓库源码逐层拆解其工程架构:格式解析的依赖选型、DuckDB-WASM Spatial「一个库同时当格式驱动和计算引擎」的完整落地细节(含一个真实的 WASM 实例中毒坑)、Web 端性能优化五条策略加一个负面实测结果、状态管理的三个可复用模式、Workbox 三层 PWA 缓存策略,以及以 HTTP Range 为核心的云原生地理空间数据方案。所有结论均标注仓库内

gitblog_00082的博客 347

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

Rust+WASM地理引擎:地形/3D Tiles/大气一体化渲染

地理空间渲染引擎正从JavaScript单线程范式转向Rust+WASM确定性计算范式。其核心原理是利用Rust所有权模型消除JS浮点累积误差与异步资源竞争,通过WASM线性内存实现GPU零拷贝数据调度,并以球面坐标系原生运算替代墨卡托投影陷阱。技术价值在于提供可控的高精度时空一致性——支持WGS84直算、物理级大气散射、体素化体积云及3D Tiles v1.1空间查询编译。典型应用于城市数字孪生底座、气象仿真平台与无人机航路规划系统。本文聚焦Rust地理引擎如何实现地形连续曲面流式采样、3D Tiles空

weixin_33834137的博客 134

lingbot-map:语言驱动型地理智能体架构解析

地理智能体(Geospatial Agent)是自然语言与空间计算融合演进的核心范式,其本质是通过语义解析、空间约束建模与动态渲染协同,实现‘语言→地理要素’的端到端映射。该架构突破传统地图SDK单向渲染局限,强调NLU-GIS-前端三端契约式解耦,依托标准化GeoQuery Schema与Query Planner调度中心,支撑POI检索、室内导航、AR叠加等多尺度空间交互场景。在智能地图交互白皮书验证下,语义驱动方案任务完成率提升63%,操作步骤减少4.2步——lingbot-map正是这一技术代际跃迁

weixin_28678151的博客 293

AI驱动的本地化搜索优化:技术与实践

本地化搜索优化(Local SEO)是数字营销中的重要环节,通过结合地理位置和用户意图,提升企业在本地搜索中的可见性。随着AI技术的发展,传统的关键词匹配逐渐被语义理解和动态内容生成取代。BERT、GPT等预训练模型能够解析复杂的用户查询,生成个性化的本地化内容。这种技术不仅提高了长尾查询的占比,还显著提升了语音搜索和地图搜索的转化率。在实际应用中,AI驱动的本地化SEO特别适合餐饮、零售等行业,能够根据实时数据动态调整内容,满足用户在不同场景下的需求。通过构建本地化知识图谱和优化数据闭环,企业可以实现更精

dieqiao8331的博客 405

lingbot-map:轻量级语义地理交互组件设计与实践

地理信息系统(GIS)中的地图组件正从‘可视化渲染’转向‘语义理解与交互’。本文围绕坐标系转换、地理围栏判断、POI模糊匹配等核心地理计算能力,解析一种面向对话式AI与边缘场景的极简架构设计——它不依赖瓦片服务与网络请求,通过逻辑层与物理层解耦,实现离线、低延迟、可嵌入的地理语义处理。特别适合需要自然语言定位、IoT设备地理围栏告警、教育类语音导航等场景,兼顾前端性能优化与业务人员可维护性。

weixin_32576389的博客 245

lingbot-map:轻量可编程地图交互组件设计与实践

地图交互组件是地理信息系统(GIS)前端开发的核心基础设施,其本质是将空间可视化与业务逻辑耦合的桥梁。传统地图 SDK 如 Mapbox、OpenLayers 虽功能完备,但体积大、学习成本高、离线支持弱,难以满足政企大屏、IoT 设备管理、教育 SaaS 等场景对轻量化、可编程性与离线可用性的刚性需求。lingbot-map 以‘命令式 API’和‘状态驱动 bot 行为’为设计原点,通过 Canvas+SVG 混合渲染、R-Tree 空间索引、IndexedDB 离线瓦片缓存等关键技术,在 80KB(g

weixin_29913663的博客 260

百万面级城市三维地图全链路加载优化实战(WebGIS/Unity 双端通用干货)

本文系统性地总结了百万面城市三维地图的性能优化方案。针对数字孪生、智慧城市等项目中常见的百万级三角面场景,从CPU、内存、GPU、网络四大瓶颈出发,提出了全链路优化策略:通过离线预处理(网格简化、实例化、纹理压缩)、空间分块与LOD分级、后端服务优化(瓦片分发、多级缓存)、前端调度(视锥剔除、异步加载)以及渲染管线优化(实例化、合批)五大核心手段,实现从42秒到4秒的首屏加载优化,内存降低58%,帧率提升267%。文章提供了Web端和Unity客户端的差异化实施方案,并给出了可量化的验收标准,为大规模三维场

分享知识,拥抱变化 584

lingbot-map不是地图SDK,而是空间语义映射中间件

空间语义映射是一种将自然语言指令精准关联到物理空间实体的关键技术,其核心在于建立语言单元与空间实体间的双向可逆映射关系。它依托空间实体注册、语义规则引擎和动态上下文桥接三大机制,实现意图识别、实体消歧与情境化推理。相比通用NLU模型,该技术具备高可解释性、低延迟和强业务耦合优势,在智能楼宇、工业巡检、医院资产调度等场景中支撑真实可用的语音/文本空间交互。lingbot-map正是这一范式的典型工程实现,代表了结构化空间知识与非结构化输入之间不可或缺的语义桥梁。

weixin_32296621的博客 230

BlogLoom产品系列01、之个人站点平台如何做一个全球的访客地图功能实现呢?

从一张只能看中国的访客地图出发,拆解如何用 Spring Boot + ip2region 定位、visit_log 事实表与 visitor_geo 维表构建可信数据链路,再用 Canvas 2D 正交投影自绘 3D 全球访客地球,实现光点热度、板块着色、榜单与热更新刷新。

每个人都是独一无二的,把握好自己的节奏,跟着自己的心走。 999
上一篇: MapLibre GL JS第62课:创建可拖动标记
下一篇: MapLibre GL JS第64课:将弹窗附加到标记
丷丩
丷丩 优质创作者: 数据科学与机器学习技术领域 优质创作者: 数据科学与机器学习技术领域
博客等级 码龄18年 1万+粉丝 317原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

丷丩

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值