天地图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, {});
相关推荐
花开盛夏^.^7 小时前
电脑打开多个浏览器Web窗口占用较大的运行内存的原因
前端·浏览器
馒头不想说话8 小时前
实体店老板的24小时AI运营员工,写、剪、发全自动,省下一整个团队工资
前端
椒哥10 小时前
一天被问几十次"允许",我统计了 517 次,然后写了个插件
前端·javascript·github
风骏时光牛马10 小时前
生成一个AI稳定性治理及疑难问题分析标题,只需要一个标题,不需要其他的任何文本。
前端
莫西干式秃头11 小时前
用 AI + threejs 写了个浏览器里的 3D 动作游戏《武来》:砍怪、放技能、开 SU7
前端·人工智能·three.js
kyriewen11 小时前
我测了 6 种防请求竞态的写法:只有 1 种真能打
前端·javascript·程序员
孟健11 小时前
用 WorkBuddy 做个人名片网页,挂上开源设计技能后效果完全不同了
前端·人工智能·ai编程
IT_陈寒11 小时前
SpringBoot自动配置的坑,这次终于爬出来了
前端·人工智能·后端
LuHang12 小时前
从天地图切换到高德地图:一次真实的底图迁移实战
前端·vue.js·cesium
用户3600555790012 小时前
Kestrel_VLLM - 27 · 寄存器常驻与融合发射:两次「少发一次」
前端