解决百度地图轨迹动画库原始点丢失问题

背景

新需求需要使用百度地图的轨迹动画服务,于是使用了百度地图轨迹库BMapGLLib,结果使用到项目中时遇到了一些问题

问题1:迟迟不更新的文档

官方文档更新的时间过于久远,按照文档引入的api和最新的存在出入。

比如:文档类方法参考中,未出现pause() continue() 等动画方法;

文档未更新还会导致不能正确引入BMapGLLib地址

文档中:

html 复制代码
//正确的
<script src="//mapopen.bj.bcebos.com/github/BMapGLLib/TckAnimation/src/TrackAnimation.min.js"></scrip>
//文档中非最新的api地址
<script type="text/javascript" src="//api.map.baidu.com/library/TrackAnimation/src/TrackAnimation_min.js"></script>

正确的地址只能在示例中看到

问题2: 轨迹点丢失问题

这是原始轨迹生成的polyline,大概有2000个轨迹点。

而使用轨迹库后,跳过了播放过程直接出现整个polyline,而且视角还在移动,这显然是不合理的。

于是经过一番debug后定位到了问题

这个函数的本意是用于扩充原始路径。它通过计算路径上每个点之间的距离,将路径按一定比例扩充为多个点,实现更加平滑地实现动画效果。

结果很明显,输入的点位高达3000个,经过这个函数的计算扩充过的点位数组归零了(百度你在干什么啊)。

当时我就很难绷

原因很容易分析:

js 复制代码
      var percent = (distances[i - 1] / totalDistance).toFixed(2);

当点位距离占总距离的占比不足百分之一的时候,这个点位直接消失不见了

所以结论很明显了

当轨迹点位超过100时,这个轨迹库就不能正常工作

这是十分严重但也十分低级的问题,只要把toFixed(2) 去掉就能解决

随便就能测试出的问题,却能一直存在,让我感觉是不是自己的姿势不对。

最后我把这个库复制了一份到本地,改了这个地方,问题就完美解决了

结语

不知道这么明显的问题没人解决,可能没啥人用,百度也就摆烂了。 最后给提了一个pr

相关推荐
子兮曰1 天前
jev-ultrafast 深度解析:7 秒订机票的浏览器 Agent 是如何炼成的
前端·后端·agent
子兮曰1 天前
Jev 爆发一周:7 秒 Agent 背后的 System One 生态与三场争议
前端·后端·ai编程
前端小万1 天前
写公众号赚了 3000 块后,我做了一款叫 "一键成稿" 的软件
前端·微信小程序
爱勇宝1 天前
ZCode 开源 24 小时:一份没有历史的账本,回答不了"有没有偷代码"
前端·后端·chatglm (智谱)
三十而立洋1 天前
Cookie 详解:从产生到安全,一次讲透
前端·javascript
卡布鲁1 天前
把一个 Vite + Vue3 应用塞进 qiankun (React + Umi3) 主站:十个坑的复盘
前端·javascript·react.js
汉堡大王95271 天前
Jev:不是聊天机器人, 而是一个智能 if 语句
前端·人工智能·后端
梦想很大很大1 天前
从运行事实到回归证据:Workrun 的 Telemetry 与 Evaluation 实践
前端·人工智能·后端
计算机魔术师1 天前
Meta Muse agent 接入 Shopify 的 Shop Pay 实现代理式购物
前端
沙蒿同学1 天前
我用 Go 搭了一条 AI Agent 流水线:从 1 张商品图到一整套淘宝详情页
前端·javascript·后端