当前位置:首页 > uni-app

uniapp 画轨迹

2026-03-05 06:32:29uni-app

uniapp 画轨迹的实现方法

使用map组件绘制轨迹

在uniapp中可以通过map组件结合polyline属性实现轨迹绘制。需要准备一组经纬度坐标点,将其作为polyline的points属性值。

示例代码:

uniapp 画轨迹

<template>
  <view>
    <map 
      :latitude="latitude" 
      :longitude="longitude" 
      :polyline="polyline"
      style="width: 100%; height: 300px;">
    </map>
  </view>
</template>

<script>
export default {
  data() {
    return {
      latitude: 39.909,
      longitude: 116.397,
      polyline: [{
        points: [
          {latitude: 39.909, longitude: 116.397},
          {latitude: 39.919, longitude: 116.407},
          {latitude: 39.929, longitude: 116.417}
        ],
        color: "#FF0000DD",
        width: 4,
        dottedLine: false
      }]
    }
  }
}
</script>

动态获取位置并绘制轨迹

可以通过uni.getLocation接口持续获取位置信息,将位置点存入数组后更新polyline的points属性。

uniapp 画轨迹

data() {
  return {
    positionList: [],
    timer: null
  }
},
methods: {
  startTracking() {
    this.timer = setInterval(() => {
      uni.getLocation({
        type: 'gcj02',
        success: (res) => {
          this.positionList.push({
            latitude: res.latitude,
            longitude: res.longitude
          });
          this.polyline[0].points = this.positionList;
        }
      });
    }, 5000);
  },
  stopTracking() {
    clearInterval(this.timer);
  }
}

轨迹样式自定义

polyline支持多种样式配置:

  • color:设置轨迹线颜色
  • width:设置线宽
  • dottedLine:是否虚线
  • arrowLine:是否带箭头
polyline: [{
  points: [...],
  color: "#00FF00",
  width: 6,
  dottedLine: true,
  arrowLine: true
}]

保存和加载历史轨迹

可以使用uni.setStorage将轨迹数据保存到本地,需要时通过uni.getStorage读取。

saveTrack() {
  uni.setStorage({
    key: 'trackData',
    data: this.positionList
  });
},
loadTrack() {
  uni.getStorage({
    key: 'trackData',
    success: (res) => {
      this.positionList = res.data;
      this.polyline[0].points = res.data;
    }
  });
}

注意事项

  1. 需要在manifest.json中配置地图和定位权限
  2. 连续定位会消耗较多电量,建议合理设置定位间隔
  3. 轨迹点过多可能导致性能问题,可考虑适当抽稀处理
  4. 不同平台的地图表现可能略有差异

标签: 轨迹uniapp
分享给朋友:

相关文章

uniapp教程

uniapp教程

uniapp 基础介绍 uniapp 是一个基于 Vue.js 的跨平台开发框架,支持一次开发,多端发布(如微信小程序、H5、App、快应用等)。其核心优势在于代码复用率高,学习成本低,适合快速构建多…

uniapp 消息推送

uniapp 消息推送

uniapp 消息推送实现方法 使用uniPush服务 uniapp官方提供了uniPush服务,支持iOS、Android及小程序平台的消息推送。需要在manifest.json中配置推送模块,并按…

uniapp旋转横屏

uniapp旋转横屏

实现横屏模式的方法 在UniApp中实现横屏模式,可以通过配置页面方向或使用CSS旋转实现。以下是两种常见方法: 修改manifest.json配置 在项目的manifest.json文件中,找到"…

uniapp前端项目

uniapp前端项目

Uniapp 前端项目开发指南 Uniapp 是一个基于 Vue.js 的跨平台开发框架,支持一次开发,多端发布(如微信小程序、H5、App 等)。以下是关于 Uniapp 前端项目的关键信息: 环…

uniapp设置title

uniapp设置title

设置页面标题的方法 在UniApp中设置页面标题可以通过以下几种方式实现,适用于不同场景和需求。 通过pages.json配置 在pages.json文件中,可以为每个页面单独配置导航栏标题。找到对…

uniapp多行注释

uniapp多行注释

uniapp多行注释方法 在UniApp中,多行注释的语法与JavaScript一致,可以使用以下两种方式实现多行注释。 方法一:使用/* */符号 通过/*开始注释,*/结束注释,中间的内容会被视…