使用uni-app中<map>组件生成轨迹

使用uni-app中的map组件生成轨迹


前言

由于业务需要开发一款app,由于本人是后端开发,仅对开发过程中遇到的问题做记录,欢迎大家批评指正。

提示:以下是本篇文章正文内容,下面案例可供参考

一、uni-app是什么

个人理解,uni-app就是一款使用Vue.js 开发所有前端应用的框架,开发一套代码可以发布在多个平台上。所以使用uni-app本人还特意去大概了解学习了一下Vue.js。关于uni-app的具体介绍及使用还请移步官网。uni-app官网
话不多说,直接上map组件的使用方式。

二、使用步骤

1.标签声明

代码如下(示例):

<view class="text-area">
        <button @tap="getwz">点我获取当前位置</button>
		<map :longitude="longitude" :latitude="latitude" :markers="marker" :polyline="polyline"></map>
</view>

2.绑定数据

代码如下(示例):

export default {
		data() {
			return {
				longitude: 112.53038,
				latitude: 37.81721,
				marker: [
					{
						id:0,
				      latitude: 37.81721,//纬度
					   longitude: 112.53038,//经度
					   iconPath: '../../logo.png',    //显示的图标        
					   rotate:0,   // 旋转度数
					   width:10,   //宽
					   height:20,   //高
					   title:'开始位置',//标注点名
					} 
				],
				 polyline:[
					{//指定一系列坐标点,从数组第一项连线至最后一项
					    points:[
					    ],
					    color:"#0000AA",//线的颜色
					    width:1,//线的宽度
					//     dottedLine:true,//是否虚线
					  }
				]
			}
		},
		methods: {
			getwz(){
				var that = this
				uni.getLocation({
					type: 'gcj02',
					isHighAccuracy: true,
					success: function(res) {
						// console.log('当前位置的经度:' + res.longitude);
						// console.log('当前位置的纬度:' + res.latitude);
						that.longitude = res.longitude;
						that.latitude = res.latitude;
					}
				});
				// 将经纬度添加到	polyline数组中
				this.polyline[0].points.push({latitude: that.latitude,longitude: that.longitude});
			},
		},
	}

总结

注意: 1、运行在小程序时,位置会有偏差,调试时建议使用真机模式调试。 2、uni.getLocation({})方法中不能直接修改data里的数据。 3.由于初始时points数组为空,所以在手动获取位置时会报错: [渲染层错误] MultiPolyline.geometries: 希望传入PolylineGeometry数组,实际第0元素的paths属性无效!

以上只是简单实现了手动获取当前位置,并生成轨迹,实际项目中可以使用定时器等方式自动生成轨迹。

  • 3
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
可以尝试进行以下优化: 1. 将重复的代码提取出来,使用函数进行封装,减少代码冗余。 2. 将v-if的判断逻辑简化,可以使用三目运算符来替代。 3. 如果数据量很大,可以考虑使用虚拟滚动等技术进行性能优化。 修改后的代码如下: ``` <uni-table border stripe emptyText="暂无更多数据"> <!-- 表头行 --> <uni-tr> <uni-th align="center">号码/姓名</uni-th> <uni-th align="center">项目</uni-th> <uni-th align="center">诊室</uni-th> <uni-th align="center">状态</uni-th> </uni-tr> <!-- 表格数据行 --> <template v-for="item in Now"> <template v-if="item.part === 0"> <uni-tr :key="item.id"> <uni-td align="center">{{ item.num }} {{ item.name }}</uni-td> <uni-td align="center">小部位-激光脱毛</uni-td> <uni-td align="center">{{ item.calltime ? item.room + '号诊室' : '---' }}</uni-td> <uni-td align="center">{{ item.calltime ? '已叫号' : '等待' }}</uni-td> </uni-tr> </template> </template> <!-- 空行 --> <template v-for="item in smallNull"> <uni-tr :key="item"> <uni-td align="center">---</uni-td> <uni-td align="center">---</uni-td> <uni-td align="center">---</uni-td> <uni-td align="center">---</uni-td> </uni-tr> </template> </uni-table> <script> export default { data() { return { Now: [], smallNull: [] } }, methods: { // 将重复的代码提取出来,使用函数进行封装 getSmallNull() { const len = 10 - this.Now.length const arr = new Array(len > 0 ? len : 0).fill('') this.smallNull = [...arr] } }, watch: { Now: { handler() { this.getSmallNull() }, immediate: true } } } </script> ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值