vue3使用leaflet+trackplayer实现非地图动画轨迹(市场平面图动态轨迹)

vue3使用leaflet+trackplayer实现非地图动画轨迹(市场平面图动态轨迹)

在这里插入图片描述

先下载 leaflet 和 leaflet-trackplayer两个主要库

leaflet官方文档

npm install leaflet 
npm install leaflet-trackplayer

然后在页面中引用

html

<template>
  <button @click="playMap">播放</button>
  <div id="map"></div>
</template>

js

import L from 'leaflet';
import 'leaflet/dist/leaflet.css';
import 'leaflet-trackplayer';

引用完成后我们开始写主要逻辑

<script setup>
import L from 'leaflet';
import 'leaflet/dist/leaflet.css';
import 'leaflet-trackplayer';
import { onMounted, ref } from 'vue';
//背景图遮盖地图的图片(市场图片)
function getImageUrl() {
  return new URL(`./map.png`, import.meta.url).href;
}
//trackplayern播放器
let track = null;
//测试的点位
const testList = ref([]);
//生命周期挂载
onMounted(() => {
  let bounds = [
    [34.255, 108.885], // 左上角的坐标
    [34.27, 108.918], // 右下角的坐标
  ];
  //创建地图对象
  let map = L.map('map', { attributionControl: false });
  //添加地图图层
  L.imageOverlay(getImageUrl(), bounds).addTo(map);
  //模拟一段轨迹数据 (真实经纬度地址哦~)
  let path = [ 
    { lat: 34.257766231787095, lng: 108.90156984329225 },
    { lat: 34.257854907014014, lng: 108.90483140945435 },
    { lat: 34.257854907014014, lng: 108.90822172164918 },
    { lat: 34.260745668218206, lng: 108.90820026397706 },
    { lat: 34.26298017628813, lng: 108.90813589096071 },
    { lat: 34.262944708369695, lng: 108.90485286712648 },
    { lat: 34.262944708369695, lng: 108.90156984329225 },
    { lat: 34.26514369102872, lng: 108.90154838562013 },
    { lat: 34.26512595752755, lng: 108.89824390411378 },
    { lat: 34.26516142452615, lng: 108.8950252532959 },
    { lat: 34.265055023485516, lng: 108.8917636871338 },
    { lat: 34.260887543511274, lng: 108.89180660247804 },
    { lat: 34.257376059678286, lng: 108.89172077178956 },
    { lat: 34.257447000196315, lng: 108.89508962631227 },
  ];
  //根据背景图片的坐标设置地图的显示范围
  map.fitBounds(bounds);
  //定义沿着轨迹移动的marker
  let markerIcon = L.icon({
    iconSize: [24, 54], // marker的大小
    iconUrl: new URL('/public/tool/arco.png', import.meta.url).href, // marker的图片
    iconAnchor: [11.5, 27], // marker的偏移
  });
  //创建播放器对象并添加至地图
  track = new L.TrackPlayer(path, { markerIcon, panTo: false }).addTo(map);
  //地图设置到合适的缩放级别
  map.setZoom(16, { animate: false });
  //点击地图添加点位
  map.on('click', function (e) {
    testList.value.push(e.latlng); //获取的经纬度
    console.log(JSON.stringify(testList.value));
  });
});
//播放轨迹
const playMap = () => {
  track.start();
};
</script>
<style scoped>
#map {
  height: 100vh;
  width: 100%;
}
</style>

TrackPlayer轨迹动画的更多配置网站
https://github.com/weijun-lab/Leaflet.TrackPlayer/blob/master/README.zh-CN.md

其实就是在地图上盖了一层你所需要的市场图片 轨迹还是按照真实经纬度走的 (哭笑不得)
希望对你有帮助

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Cheng Lucky

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值