Leaflet【四】轨迹回放效果控制台控制轨迹运动效果

安装依赖&准备静态资源

轨迹回放使用leaflet-trackplayer插件

npm i leaflet-trackplayer --force

初始化地图,在这里初始化地图可以参考,然后导入了轨迹回放插件和一个图片(用于标记当前轨迹运动点)图片资源

import L from 'leaflet';
import 'leaflet-trackplayer';
import 'leaflet/dist/leaflet.css';
import CAR from '@/assets/image/car.png';

let map = null;
const sourceUrl = 'https://server.arcgisonline.com/arcgis/rest/services/World_Imagery/MapServer/tile/{z}/{y}/{x}.png';
map = L.map('map').setView([23, 120], 2);
  const tileLayer = L.tileLayer(sourceUrl, {
    maxZoom: 18,
    minZoom: 2,
    attribution: '© modify'
  });
  tileLayer.addTo(map);

准备轨迹数据 轨迹数据

  const path = [
    {
      lat: 34.25615548523744,
      lng: 108.91164044842363
    },
	// ...... 省略了很多点,可以在上面GitHub链接中获取
    {
      lat: 34.29496736180883,
      lng: 108.91578701078069
    }
  ];

轨迹绘制&播放

  • 先定义一个icon,用来标记轨迹运动点
  • 通过new L.TrackPlayer创建轨迹,入参分别是 轨迹数据、轨迹配置。然后直接加到地图当中即可,并且我们保存返回的track对象
  • 最后通过track对象的start方法开启播放,通过pause方法关闭播放
let track = null;
const initPath = () => {
  // 定义沿着轨迹移动的Icon
  let markerIcon = L.icon({
    iconSize: [27, 54],
    iconUrl: CAR, // 前面导入的img资源
    iconAnchor: [13.5, 27]
  });
  // 创建播放器对象并添加至地图
  track = new L.TrackPlayer(path,
  	  // 轨迹配置,都可以不要,保留markerIcon一个就可以了
      {
        markerIcon,
        speed: 500, // 播放速度
        weight: 10, // 轨迹线宽度
        passedLineColor: '#f2cac9', // 已行驶轨迹部分的颜色
        notPassedLineColor: '#fbeee2', // 未行驶轨迹部分的颜色
        panTo: true, // 地图跟随移动
        // 轨迹箭头样式
        polylineDecoratorOptions: {
          patterns: [
            /**
             * offset 第一个图案符号的偏移量,从线的起点开始。默认值:0
             * endOffset 最后一个图案符号的最小偏移量,从线的端点开始。默认值:0
             * repeat 重复间隔。定义每个连续符号的锚点之间的距离
             * symbol 图标样式
             * */
            {
              offset: 0,
              repeat: 20,
              symbol: L.Symbol.arrowHead({
                pixelSize: 10,
                pathOptions: {color: 'red', weight: 2, stroke: true}
              })
            }
          ]
        },
        markerRotation: true // 是否开启marker的旋转
      }
  ).addTo(map);
  track.start();
  // 停止播放
  // track.pause();
  // 清除轨迹
  // track.remove();
};

在这里插入图片描述

通过滑块控制轨迹进度

通过track的progress事件去得到轨迹运动过程当中的值,其中progress就是进度(0-1之间)。只需要去取progress的值去给到el-slider绑定的值就完成了滑块进度对应轨迹进度效果了,同时我们给滑块添加@input事件(使用鼠标拖曳时,活动过程实时触发)。在这个方法当中再通过track.setProgress重新设置值回去也就完成了进度条控制轨迹的效果了

const sliderProgress = ref(0);
// 监听进度 progress 0-1 index 到第几个点
track.on('progress', (progress, {lng, lat}, index) => {
  sliderProgress.value = progress * 100;
  console.log(`progress:${progress.toFixed(2)} - position:${lng.toFixed(2)},${lat.toFixed(2)} - trackIndex:${index}`);
});

const formatTooltip = (val) => {
  return val.toFixed(2);
};

const changeProgress = (val) => {
  track.setProgress(val / 100);
  track.setSpeed(500);
};

<el-slider v-model="sliderProgress" :format-tooltip="formatTooltip" @input="changeProgress"/>

同理还可以控制speed运动速度,通过track.setSpeed(val)去设置。这里默认取500km/h的速度值,而后切换的时候根据500去乘对应的倍数将速度设置回去即可

const selectSpeed = ref(1);
const options = [
  {
    value: 0.5,
    label: 'X0.5'
  },
  {
    value: 1,
    label: 'X1'
  },
  {
    value: 2,
    label: 'X2'
  },
  {
    value: 3,
    label: 'X3'
  },
  {
    value: 5,
    label: 'X5'
  }
];
const changeSpeed = (val) => {
  track.setSpeed(500 * val);
};

<el-select v-model="selectSpeed" @change="changeSpeed">
  <el-option v-for="item in options" :key="item.value" :label="item.label" :value="item.value"/>
</el-select>

leaflet-轨迹回放,视频效果

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【对抗去偏】BiasAdv: Bias-Adversarial Augmentation for Model Debiasing

原文标题&#xff1a; BiasAdv: Bias-Adversarial Augmentation for Model Debiasing 原文代码&#xff1a; 暂无 发布年度&#xff1a; 2023 发布期刊&#xff1a; CVPR 摘要 Neural networks are often prone to bias toward spurious correlations inherent in a dataset, …

【代码仓库提交大文件,用Git LFS!】

开始前 Git LFS&#xff1a;请注意&#xff0c;你的远程仓库需要支持Git LFS。GitHub、GitLab和Bitbucket都支持Git LFS&#xff0c;但可能需要额外的配置或开启特定的支持选项。 介绍 Git LFS (Large File Storage) 是一个 Git 扩展&#xff0c;用于处理和存储大文件。通常…

vivado WIRE

WIRE是用于在Xilinx部件上路由连接或网络的设备对象。一根电线 是单个瓦片内部的一条互连金属。PIP、系紧装置和 SITE_PINs。 提示&#xff1a;WIRE对象不应与设计的Verilog文件中的WIRE实体混淆。那些 电线在设计中与网络有关&#xff0c;而不是与定义的设备的路由资源有关 WI…

美创科技入选“2024年度浙江省工业信息安全服务支撑单位”

近日&#xff0c;浙江省经济和信息化厅公布“2024年度浙江省工业信息安全服务支撑单位”名单。 经单位自愿申报、各市经信主管部门初审推荐、专家评审等环节&#xff0c;凭借在工业数据安全领域长期深耕和产品服务实力&#xff0c;美创科技成功入选&#xff01; “2024年度浙江…

深度学习之绘图基础

文章目录 1.实验目的2. 需求3.代码结果图片 1.实验目的 熟练绘制各种图像&#xff0c;为深度学习打基础 2. 需求 给定一个函数&#xff0c;需要你画出原图像以及这个函数在某点切线图像 3.代码 # File: python绘制函数图像以及倒数图像.py # Author: chen_song # Time: 20…

Homebrew使用

官网&#xff1a;https://brew.sh/ 安装&#xff1a; 简介&#xff1a;https://www.jianshu.com/p/f4c9cf0733ea 比如&#xff0c;安装maven: 1、brew install maven 2、查看安装路径&#xff1a;brew list maven 具体参考&#xff1a;https://blog.csdn.net/m0_67402970/arti…

Excel条件格式的经典用法

目录&#xff1a; 一、自动设置填充颜色 二、设置Excel到期自动销毁 三、隔行自动标记 四、美化表格 五、快速突出显示重复值 六、标记空单元格 七、突出显示前N名单元格数值 八、表格添加新内容自动加边框 一、自动设置填充颜色 1、选择内容 首先我们选中表格的数据…

机器学习(V)--无监督学习(六)流形学习

title: 机器学习(V)–无监督学习(二)流形学习 date: katex: true categories: Artificial IntelligenceMachine Learning tags:机器学习 cover: /img/ML-unsupervised-learning.png top_img: /img/artificial-intelligence.jpg abbrlink: 26cd5aa6 description: 流形学习 【降…

支付宝推出NFC(近场通信)碰一碰支付功能

近日&#xff0c;支付宝推出NFC&#xff08;近场通信&#xff09;碰一碰支付功能&#xff0c;支持iPhone、安卓手机。NFC支付早已不是新事物&#xff0c;从二维码支付重回NFC支付&#xff0c;支付宝能撬动市场吗&#xff1f; 根据网友反馈&#xff0c;目前支付宝正在上海静安大…

媒体访谈 | 广告变现痛点有新解,俄罗斯市场成大热门?

今年一季度&#xff0c;中国自主研发游戏在海外市场实际销售收入达到了40.75亿美元&#xff0c;环比和同比均实现了超过5%的增长&#xff0c;出海&#xff0c;仍是游戏产品近些年来最主要的发展模式之一。 当今的市场环境正经历一系列深刻变革&#xff0c;移动游戏广告市场呈现…

超GPT-4o,代码能力超强!Claude 3.5 Sonnet正式发布

6月20日晚&#xff0c;著名大模型平台Anthropic在官网正式发布了Claude 3.5 Sonnet。 据悉&#xff0c;这是Sonnet 是Claude 3.5系列中第一个&#xff0c;也是Anthropic目前最强的视觉模型。随后会发布Haiku和Opus版本。 其性能超过了上一代Claude 3旗舰模型Opus&#xff0c;…

HarmonyOS父子组件传递参数

HarmonyOS父子组件传递参数 1. 使用State和Prop进行父子组件传递———注意是单向同步 Prop装饰器&#xff1a;父子单向同步 注意&#xff1a;只支持单向同步&#xff0c;同时也只能支持string\number\boolean\enum比较简单的类型。 代码 // 使用 props 进行父子组件传值…

【QCustomPlot实战系列】QCPGraph堆叠面积图

在【QCustomPlot实战系列】QCPGraph堆叠图的基础上&#xff0c;使用setChannelFillGraph函数即可 static QCPScatterStyle GetScatterStyle(const QColor& color) {QPen pen(color, 2);return QCPScatterStyle(QCPScatterStyle::ssCircle,pen,Qt::white, 5); }static QCP…

6.21 移动语义与智能指针

//先构造&#xff0c;再拷贝构造//利用"hello"这个字符串创建了一个临时对象//并复制给了s3//这一步实际上new了两次String s3 "hello"; 背景需求&#xff1a; 这个隐式创建的字符串出了该行就直接销毁掉&#xff0c;效率比较低 可以让_pstr指向这个空间…

Java面试题:mysql执行速度慢的原因和优化

Sql语句执行速度慢 原因 聚合查询 多表查询 表数据量过大查询 深度分页查询 分析 sql的执行计划 可以使用EXPLAIN或者DESC获取Mysql如何执行SELECT语句的信息 直接在select语句前加关键字explain/desc 得到一个执行信息表 信息字段分析 possible_keys:可能使用到的索…

5G如何推动工业数字化转型?

据中国信息通信研究院测算&#xff0c;5G商用五年来&#xff0c;直接带动经济总产出约5.6万亿元&#xff0c;间接带动总产出约14万亿元&#xff0c;有力促进了经济社会高质量发展。而工业数字化转型&#xff0c;作为应对市场变革的关键战略&#xff0c;也借助5G技术卓越的高带宽…

elementui组件库实现电影选座面板demo

<!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Cinema Seat Selection</title><!-- 引入E…

【Nodejs 日志库 】

总结了几个比较好用的Nodejs日志库&#xff0c;我认为一个 合格的日志库 需要 支持多种传输&#xff0c;如文件、控制台、HTTP 等。可定制的日志级别和格式。异步日志记录。 根据上述的需求&#xff0c;挑选出 几款比较好用的日志库&#xff0c; 1. Winston&#xff08;Gith…

【面试题分享】重现 string.h 库常用的函数

文章目录 【面试题分享】重现 string.h 库常用的函数一、字符串复制1. strcpy&#xff08;复制字符串直到遇到 null 终止符&#xff09;2. strncpy&#xff08;复制固定长度的字符串&#xff09; 二、字符串连接1. strcat&#xff08;将一个字符串连接到另一个字符串的末尾&…

【2024最新华为OD-C/D卷试题汇总】[支持在线评测] 5G基站光纤连接问题(200分) - 三语言AC题解(Python/Java/Cpp)

&#x1f36d; 大家好这里是清隆学长 &#xff0c;一枚热爱算法的程序员 ✨ 本系列打算持续跟新华为OD-C/D卷的三语言AC题解 &#x1f4bb; ACM银牌&#x1f948;| 多次AK大厂笔试 &#xff5c; 编程一对一辅导 &#x1f44f; 感谢大家的订阅➕ 和 喜欢&#x1f497; &#x1f…