首页 > 其他分享 >【leaflet】动态轨迹

【leaflet】动态轨迹

时间:2023-10-12 17:22:51浏览次数:28  
标签:latLngs 轨迹 aMarker leaflet length duration 动态 motion

使用插件:leaflet.motion

https://github.com/Igor-Vladyka/leaflet.motion

    // 执行轨迹回放
    doShowTraces(latLngs) {
      latLngs = [
        [39.123595, 110.561176],
        [39.123041, 110.566147],
        [39.116309, 110.566799],
        [39.115508, 110.557799],
        [39.123595, 110.561176]
      ]
      this.traceLayers.clearLayers() // 清理图层
      if (latLngs && latLngs.length > 1) {
        this.aMarker = L.animatedMarker({ //创建动画marker
          latLngs,
          duration: latLngs.length * 1000
        }).setIcon(
          L.glyphicon({
            icon: 'fas fa-walking',
            color: 'white',
            background: '#dc3545',
            size: 38,
            borderWidth: 0
          })
        ).addTo(this.traceLayers)
        // 移动回调
        this.aMarker.on('chunkmove', ({ index, duration }) => {
           //调整视野
          this.map.panTo(latLngs[index], {
            duration: duration > 500 ? duration / 1000 : 0
          })
        })
        // 停止回调
        this.aMarker.on('stopmove', () => {
          this.aMarker.off('chunkmove')
          this.aMarker.bindPopup(L.vuePopup({
            vueInstance: popupTrace,
            props: { vm: this, latLngs },
            closeButton: false,
            offset: [0, -5],
            className: 'nice-popup bg-darkgrey'
          }))
          this.aMarker.openPopup()
          this.highLightTraceLayers(false)
        })
        // 开始移动
        this.map.setView(latLngs[0], 9)
        _.delay(() => {
          this.highLightTraceLayers(true)
          this.aMarker.startMove()
          //绘制动态轨迹
          L.motion.polyline(latLngs,{
            color: 'red'
          },{
            auto: true,
            duration:latLngs.length * 1000,
          }).addTo(this.traceLayers)
        }, 500)
      }
    }

 

标签:latLngs,轨迹,aMarker,leaflet,length,duration,动态,motion
From: https://www.cnblogs.com/zhangdali/p/17760014.html

相关文章

  • leaflet | GridLayer扩展土层
    一、createtile方法1、同步使用要创建自定义层,请扩展GridLayer并实现createTile()方法,该方法将通过一个带有x、y和z(缩放级别)坐标的点对象来绘制瓦片。代码示例:varCanvasLayer=L.GridLayer.extend({createTile:function(coords){//createa<canvas>elem......
  • 动态规划的状态设计 | bot 讲课の补题
    stojames1badcreeperorz.好厉害的题,但是怎么有人补了三天才补完呢?CF1810GTheMaximumPrefix线性dp,怎么有bot说题目难度在*2400~*2800之间结果开场就是*3200啊/youl尝试直接正着做,发现要记\(f_{i,j,k}\)表示前\(i\)个数,最大前缀和是\(j\),当前前缀和是\(k\)......
  • frida动态插桩初探
    前言近期碰到了分析app的需求,就学习了一下frida的动态插桩技术。frida是一款轻量级HOOK框架,可用于多平台上,例如android、windows、ios等。frida分为两部分,服务端运行在目标机上,通过注入进程的方式来实现劫持应用函数,另一部分运行在我们自己的控制机上。frida上层接口支持js、pyt......
  • 动态规划习题
    DP习题Melon的难题【01背包问题中“装满背包的最少物品数问题】注意初始化问题,第一行除了第一个都要赋值最大值!!!importjava.util.Scanner;importjava.util.*;//注意类名必须为Main,不要有任何packagexxx信息publicclassMain{publicstaticvoidmain(String......
  • c# 简单的动态执行字符串
    在C#中,可以使用`CSharpCodeProvider`类动态执行C#代码。以下是一个示例,演示了如何动态执行C#命令:```csharpusingSystem;usingMicrosoft.CSharp;usingSystem.CodeDom.Compiler;usingSystem.Reflection;classProgram{staticvoidMain(){//创建CSh......
  • Dash 2.14版本开始支持动态回调注册!
    本文示例代码已上传至我的Github仓库https://github.com/CNFeffery/dash-master大家好我是费老师,就在昨晚,Dash框架发布了其2.14.0新版本,新增的功能中,有一项非常令人兴奋,那就是其针对回调函数这一Dash中的核心概念,新增了动态回调函数注册的支持......
  • vue动态引入组件
    vue动态引入组件,正常情况是页面渲染时动态加载该页面组件,还能进行细化动态加载情况,比如弹窗组件动态导入:除了路由懒加载,你还可以在其他地方使用动态导入来按需加载组件。例如,在某个按钮的点击事件中异步加载一个组件:import('./components/MyComponent.vue').then((module)=>{......
  • 简述MyBatis动态SQL
    简述MyBatis动态SQL前言 MyBatis是一个用于Java持久层的开源框架,它提供了一种简化数据库访问的方式。MyBatis的动态SQL功能允许我们根据不同的条件动态生成SQL语句,以实现更灵活的数据库操作。在MyBatis中,我们经常使用以下标签来编写动态SQL:<if/>作用:用于实现简单的条......
  • Wpf DataGrid设置列标题动态绑定实例
    在WPF中,可以使用DataGrid控件来显示和编辑表格式的数据。要设置DataGrid列标题的动态绑定,可以使用DataGrid的列定义和绑定功能。以下是一个示例,展示如何使用动态绑定设置DataGrid的列标题:在XAML中定义DataGrid控件,并为其定义列:<DataGridAutoGenerateColumns=......
  • 动态sql
    if <selectid="getEmpById"parameterType="emp"resultType="emp">  select* fromemp   <where>   <iftest="ename!=nullandename!=''">   ename=#{ename}  </if>  <if......