uniapp-腾讯地图自行车路线规划

news/2024/7/20 3:54:13 标签: uni-app, javascript, 前端, 微信小程序, 小程序

腾讯地图自行车路线规划

<template>
	<view class="">
		<cu-custom bgColor="bg-gradual-blue" :isBack="true">
			<block slot="backText">返回</block>
			<block slot="content">自行车骑行路线规划</block>
		</cu-custom>
		<view class="notice">
			<u-notice-bar :text="text"></u-notice-bar>
		</view>
		<view class="map">
			<map :latitude="latitude" :longitude="longitude" show-location :markers="covers" :polyline="polyline"></map>
		</view>
		<view class="btn">
			<button type="primary" size="mini" @click="selectionLocation">手动选择目的地</button>
			<button type="warn" size="mini" @click="routePlanning">开始自行车骑行路线规划</button>
		</view>
	</view>
</template>

<script>
	// 引入SDK核心类,地图组件
	import QQMapWX from '../components/qqmap-wx-jssdk1.2/qqmap-wx-jssdk.js'
	export default{
		data(){
			return{
				qqmapsdk:{},  // 腾讯地图小程序的SDK
				text: '仅支持从您当前的位置开始规划路线,请注意,若您选择的起点、终点、途经点若不在道路上,会自动吸附到附近的道路上',  // 滚动通知
				latitude: '',  // 纬度
				longitude: '',  // 经度
				covers:[],  // 地图上面的标记点
				to:{  // 目的地坐标
					latitude: '',
					longitude: '',
				},
				polyline: [],  // 路线
			}
		},
		onLoad() {
			// 实例化API核心类
			this.qqmapsdk = new QQMapWX({
				key: ''  // 自己申请的key值
			})
			// 获取用户当前的位置
			this.getUserLocation()
		},
		methods:{
			// 获取用户当前的位置
			getUserLocation(){
				uni.getLocation({
					type:'gcj02',
					success: (e) => {
						this.latitude = e.latitude
						this.longitude = e.longitude
					}
				})
			},
			// 手动选择目的地
			selectionLocation(){
				uni.chooseLocation({
					success: (e) => {
						// console.log(e)
						this.to.latitude = e.latitude
						this.to.longitude = e.longitude
						this.covers = [{
							latitude: e.latitude,
							longitude: e.longitude,
							width: 20, //宽
							height: 30, //高
							label:{
								content: e.name,
								color: '#ffffff',
								fontSize: 14,
								boderRadius: 2,
								bgColor: '#00c16f',
								display: 'ALWAYS',
								padding: 5,
								anchorX: 0,
								anchorY:-60,
							}
						}]
					}
				})
			},
			// 自行车骑行路线规划
			routePlanning(){
				let that = this
				that.qqmapsdk.direction({
					mode: 'bicycling',  // 自行车骑行
					from:{   // 起始位置(当前位置)坐标
						latitude: that.latitude,
						longitude: that.longitude
					},
					to: that.to,  // 目的地位置坐标
					success(res){
						// console.log(res)
						var coors = res.result.routes[0].polyline
						var pl = []  // 点串数组
						// 坐标解压(返回的点串坐标,通过前向差分进行压缩)
						var kr = 1000000
						for(var i = 2; i < coors.length;i++){
							coors[i] = Number(coors[i - 2]) + Number(coors[i]) / kr
						}
						// 将解压后的坐标放入点串数组pl中
						for(var i = 0; i < coors.length; i += 2){
							pl.push({
								latitude: coors[i],
								longitude: coors[i + 1]
							})
						}
						// console.log('点串数组',pl)
						// 设置polyline属性,将路线显示出来,将解压坐标第一个数据作为起点
						that.polyline = [{
							points: pl,
							color: '#352effdd',
							width: 4
						}]
					}
				})
			}
		}
	}
</script>

<style>
	page{
		width: 100%;
		height: 100%;
	}
</style>
<style lang="scss" scoped>
	.map{
		width: 100%;
		height: 800rpx;
		margin-top: 10rpx;
		map{
			width: 100%;
			height: 100%;
		}
	}
	.btn{
		width: 100%;
		display: flex;
		justify-content: space-around;
	}
</style>

运行的效果图略


http://www.niftyadmin.cn/n/271788.html

相关文章

Node框架 【Koa】介绍、安装以及使用

文章目录 &#x1f31f;前言&#x1f31f;介绍&#x1f31f;koa优势&#x1f31f;洋葱模型&#x1f31f;安装&#x1f31f;具体步骤&#xff1a;&#x1f31f;创建项目目录&#x1f31f;初始化项目&#x1f31f;进入目录,安装koa &#x1f31f;使用&#x1f31f;案例&#x1f3…

利用sampleini库实现c/c++操作ini配置文件

github sampleini库下载链接: https://github.com/brofield/simpleini 下载后只需一下三个文件即可: 配置文件格式:采用以下格式; 1. 加载配置文件前重要设置 /*设置是否使用utf8编码作为加载/保存; 在ini数据被加载后不可设置; 默认true;*/ void SetUnicode(bool a_bIsUtf8 …

python -- 检验GPM数据是否缺失

忙了好久没有更新&#xff0c;最近各种汇报、组会、读文献、学习深度学习的基础知识&#xff0c;转眼间4月都快结束了&#xff0c;太快了。。 今天分享一个用来检查下载的GPM数据是否存在缺失的python代码。为什么要这么干呢&#xff1f;这是因为在进行深度学习进行数据集前处…

大数据编程实验3 熟悉常用的HBase操作

实验:熟悉常用的HBase操作 1实验目的 理解HBase在Hadoop体系结构中的角色&#xff1b;熟练使用HBase操作常用的Shell命令&#xff1b; 2 实验平台 操作系统&#xff1a;Linux Hadoop版本&#xff1a;3.1.3 HBase版本&#xff1a;2.2.2 JDK版本&#xff1a;1.8 3 实验内容和…

linu0.12-8-1

[288页] 8-1-总体功能 linux/kernel/目录下共包括10个C语言文件和2个汇编语言以及 一个kernel下编译文件的管理配置文件Makefile。 该目录下的代码文件从功能上可以分为三类&#xff0c; 一类是硬件&#xff08;异常&#xff09;中断处理程序文件&#xff0c; 一类是系统调用…

电脑硬盘检测怎么操作?如何检查硬盘的健康情况?

案例&#xff1a;如何对电脑硬盘进行检测&#xff1f; 【我的电脑硬盘中有许多重要的数据&#xff0c;我想知道电脑硬盘的健康状况怎么样&#xff1f;有没有小伙伴知道电脑硬盘检测的方法&#xff1f;】 电脑硬盘是存储数据的关键组件&#xff0c;而随着时间的推移和使用频率…

07 【Sass语法介绍-控制指令】

1.前言 Sass 为我们提供了很多控制指令&#xff0c;使得我们可以更高效的来控制样式的输出&#xff0c;或者在函数中进行逻辑控制。本节内容我们就来讲解什么是 Sass 控制指令&#xff1f;它能用来做什么&#xff1f;它将使你更方便的编写 Sass 。 2.什么是 Sass 控制指令 控…

3dMax需要什么样的硬件环境才能更好的工作?

3dMax官方给出了系统要求的列表 ,可用于帮助确保系统中的硬件能够与他们的软件一起工作。但是,这个“系统要求”列表只涵盖了运行软件所需硬件的最基本知识,而不是实际提供最佳性能的硬件。由于这些列表的不一致程度,我们花时间进行测试以确定运行 3dMax 的最佳硬件。基于…