天地图Marker跳一跳动画

天地图的Marker点终于也能实现"跳一跳"啦!虽然天地图官方API目前没有直接提供Marker点跳动的现成方法,但我们可以借助一些技术手段来实现这一效果。

效果图
核心方法
typescript 复制代码
function handleMarkerJumpAnimation(marker, options) {
    var {
        jumpHeight = 0.0005,  // 弹跳高度(经纬度偏移量)
        steps = 25,          // 动画步数
        total = 1, // 执行次数
    } = options;
    // 弹跳动画参数
    var curLngLat = marker.getLngLat();
    marker.setLngLat (curLngLat)
    var curLngLat = marker.getLngLat();
    var targetLngLat = new T.LngLat(curLngLat.lng, curLngLat.lat + jumpHeight);
    // 当前状态
    var currentStep = 0;
    var animationId;
    function animate() {
        if (currentStep < steps) {
            // 计算新的位置
            var progress = currentStep / steps;
            var newLat = curLngLat.lat + (targetLngLat.lat - curLngLat.lat) * progress;
            var newLngLat = new T.LngLat(curLngLat.lng, newLat);
            marker.setLngLat(newLngLat);

            currentStep++;
            animationId = requestAnimationFrame(animate);  // 使用 requestAnimationFrame 继续动画
        } else {
            // 动画结束,恢复初始位置
            marker.setLngLat(curLngLat);
            cancelAnimationFrame(animationId);
            if (total === 0) {
                animate = null;
                animationId = null;
                return;
            }
            total--
            currentStep = 0;
            animate();
        }
    }
    animate();  // 开始动画
}
使用
typescript 复制代码
// 创建标注对象
var marker = new T.Marker(new T.LngLat(116.411794, 39.9068));
// 向地图上添加标注
map.addOverLay(marker);
// 调用跳一跳方法
handleMarkerJumpAnimation(marker, {});
相关推荐
xm_xm_xm_137 分钟前
react17版本以前类组件常用操作
前端·javascript·react.js
ly76891 小时前
Web 性能优化实战:从 Core Web Vitals 到工程化性能治理
前端·性能优化
冬奇Lab2 小时前
一天一个开源项目(第200篇):next-forge - 生产级 Next.js SaaS 启动模板
前端·前端框架·开源
Profile排查笔记2 小时前
指纹浏览器怎么设置 IP?代理配置、检测与排错流程
前端·人工智能·后端·自动化
lzhdim2 小时前
13、JavaScript事件循环机制 - JavaScript学习系列文章
开发语言·前端·javascript·学习·ecmascript
liangshanbo12152 小时前
Vue 3 <script setup> 的本质原理是什么?它与普通 setup()有何区别?
前端·javascript·vue.js
IT_陈寒3 小时前
SpringBoot自动配置失效?你可能漏了这个小开关
前端·人工智能·后端
kyriewen3 小时前
我写了1个复盘Skill,和AI协作踩过的坑第二天自动变成护栏
前端·程序员·ai编程
风骏时光牛马3 小时前
AI提示词异常故障复盘分析
前端
SoaringHeart4 小时前
Flutter 进阶:NCanvasImageLoader 让 Canvas 也能画网络图
前端·flutter