mapboxGL中的航线动画

概述

借用上篇文章中二阶贝塞尔曲线的生成,本文实现mapboxGL中的航线动画。

效果

map1.gif

实现

1. 初始化地图

const from = [101.797439042302, 36.5937248286007];
const to = [106.9733, 35.217];
const points = new ArcLine(from, to);
const line = new Geometry(points, "LineString")const style = {version: 8,sources: {XYZTile: {type: "raster",tiles: ["http://webrd01.is.autonavi.com/appmaptile?x={x}&y={y}&z={z}&lang=zh_cn&size=1&scale=1&style=8","http://webrd02.is.autonavi.com/appmaptile?x={x}&y={y}&z={z}&lang=zh_cn&size=1&scale=1&style=8","http://webrd03.is.autonavi.com/appmaptile?x={x}&y={y}&z={z}&lang=zh_cn&size=1&scale=1&style=8","http://webrd04.is.autonavi.com/appmaptile?x={x}&y={y}&z={z}&lang=zh_cn&size=1&scale=1&style=8",],tileSize: 256,},LineVector: {type: "geojson",data: line,},},layers: [{id: "XYZTile",type: "raster",source: "XYZTile",minzoom: 0,maxzoom: 22,},{id: "LineVector",type: "line",source: "LineVector",paint: {"line-color": "#f00","line-width": 3,},},],
};const map = new mapboxgl.Map({container: "map",style,attributionControl: false,center: [104.74329766269716, 35.80025022526921],zoom: 8,pitch: 60,bearing: getAngle(from, to)
});

2. 添加飞机

map.on('load', () => {// 添加动态图标map.loadImage('../css/icon.png', function(error, image) {if (error) throw errormap.addImage('flyline-icon', image)map.addSource('flyline-point', {'type': 'geojson','data': new Geometry(from, 'Point')})map.addLayer({'id': 'flyline-point','source': 'flyline-point','type': 'symbol','layout': {'icon-image': 'flyline-icon','icon-size': 0.4,'icon-allow-overlap': true,'icon-rotation-alignment': 'map','icon-pitch-alignment': 'map','icon-rotate': 0}})
})

3. 开始动画

const count = 500
const length = turf.length(line)
const interval = length / count
let index = 0
let playFunction = () => {if(index > count) {clearInterval(playFlag)} else {const point = turf.along(line, index * interval)const pointP = turf.along(line, index * interval * 0.8)map.getSource('flyline-point').setData(point)const rotate = getAngle(pointP.geometry.coordinates, point.geometry.coordinates)map.setLayoutProperty('flyline-point', 'icon-rotate', rotate)setView(pointP.geometry.coordinates, rotate + 90)index++}
}
let playFlag = setInterval(playFunction)
playFunction()/ / 设置视图
function setView(center, angle) {map.setBearing(angle);map.setCenter(center);
}// 计算角度
function getAngle(coords1, coords2) {return turf.bearing(turf.point(coords1),turf.point(coords2)) - 90
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/419495.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【开源】基于JAVA语言的贫困地区人口信息管理系统

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 人口信息管理模块2.2 精准扶贫管理模块2.3 特殊群体管理模块2.4 案件信息管理模块2.5 物资补助模块 三、系统设计3.1 用例设计3.2 数据库设计3.2.1 人口表3.2.2 扶贫表3.2.3 特殊群体表3.2.4 案件表3.2.5 物资补助表 四…

java验证ftp地址是否可用

一.前言 在实际开发中我们的业务是我们将订单发到客户的指定的地方, 我们需要验证用户的ftp地址是否真实且有效, 我们根据java程序来进行验证, 步骤和思路应该是. 步骤描述1导入所需要的 java类库(jar包依赖)2创建ftp客户端对象3设置ftp连接服务端的连接参数4建立与ftp的服务…

IntelliJ IDEA 常用快捷键一览表(通用型,提高编写速度,类结构、查找和查看源码,替换与关闭,调整格式)

文章目录 IntelliJ IDEA 常用快捷键一览表1-IDEA的日常快捷键第1组:通用型第2组:提高编写速度(上)第3组:提高编写速度(下)第4组:类结构、查找和查看源码第5组:查找、替换…

【C++】文件操作

文件操作 一、文本文件(一)写文件读文件 二、二进制文件(一)写文件(二)读文件 程序运行时产生的数据都属于临时数据,程序一旦运行结束都会被释放,通过文件可以将数据持久化&#xff…

JRTP实时音视频传输(2)-使用TCP通信的案例

环境搭建等参考:JRTP实时音视频传输(1)-必做的环境搭建与demo测试 1.创建自己的demo 先将example1拷贝为myclienttcp.cpp和myservertcp.cpp cp example1.cpp myclienttcp.cpp cp example1.cpp myservertcp.cpp 改写jrtplib/JRTPLIB/examples/CMakeLists.txt&…

用Axure RP 9制作弹出框

制作流程 1.准备文本框 下拉列表 按钮 动态面板 如图 2.先把下拉列表放好 再放动态面板覆盖 3.点动态面板 进入界面 如图 4.给按钮添加交互 3个按钮一样的 如图 5.提交按钮添加交互 如图

python222网站实战(SpringBoot+SpringSecurity+MybatisPlus+thymeleaf+layui)-热门标签推荐显示实现

锋哥原创的SpringbootLayui python222网站实战: python222网站实战课程视频教程(SpringBootPython爬虫实战) ( 火爆连载更新中... )_哔哩哔哩_bilibilipython222网站实战课程视频教程(SpringBootPython爬虫实战) ( 火…

Eyes Wide Shut? Exploring the Visual Shortcomings of Multimodal LLMs

大开眼界?探索多模态模型种视觉编码器的缺陷。 论文中指出,上面这些VQA问题,人类可以瞬间给出正确的答案,但是多模态给出的结果却是错误的。是哪个环节出了问题呢?视觉编码器的问题?大语言模型出现了幻觉&…

【计算机网络】TCP握手与挥手:三步奏和四步曲

这里写目录标题 前言三次握手四次挥手三次握手和四次挥手的作用TCP三次握手的作用建立连接防止已失效的连接请求建立连接防止重复连接 TCP四次挥手的作用:安全关闭连接避免数据丢失避免半开连接 总结: 总结 前言 TCP(传输控制协议&#xff09…

大模型理论基础3

模型架构 模型概括 先把语言模型看成黑盒,以便于了解整体功能后拆分成:分词、模型架构 分词 首先要知道:语言模型 p 是建立在词元(token)序列的上的一个概率分布输出,其中每个词元来自某个词汇表V&#…

NLP论文阅读记录 - 2022 | WOS 04.基于 XAI 的强化学习方法,用于社交物联网内容的文本摘要

文章目录 前言0、论文摘要一、Introduction1.1目标问题1.2相关的尝试1.3本文贡献 二.相关工作三.本文方法3.1 总结为两阶段学习3.1.1 基础系统 3.2 重构文本摘要 四 实验效果4.1数据集4.2 对比模型4.3实施细节4.4评估指标4.5 实验结果4.6 细粒度分析 五 总结思考 前言 XAI-Base…

USB-C接口给显示器带来怎样的变化?

随着科技的不断发展,Type-C接口已经成为现代电子设备中常见的接口标准。它不仅可以提供高速的数据传输,还可以实现快速充电和视频传输等功能。因此,使用Type-C接口的显示器方案也受到了广泛的关注。本文将介绍Type-C接口显示器的优势、应用场…