四 uniapp的微信小程序位置服务(获取位置以及调用导航)

上一节tabBar组件

上一章节一起去了解了tabBar组件的含义和构造形式,本章节我们再来一些干货,想必很多人都知道最近微信小程序很火。
那么作为一个多平台开发的uniapp,肯定可以生成微信小程序端。那么问题来了,既然支持多端开发,肯定有很多接口是客户端自己的,就比如微信支付、微信授权登录,这些肯定是在微信小程序中才能使用。

获取微信位置

uni.getLocation(OBJECT)

获取当前的地理位置、速度。 在微信小程序中,当用户离开应用后,此接口无法调用,除非申请后台持续定位权限;当用户点击“显示在聊天顶部”时,此接口可继续调用。

参数名类型必填说明平台差异说明
typeString默认为 wgs84 返回 gps 坐标,gcj02 返回国测局坐标,可用于 uni.openLocation 的坐标,app平台高德SDK仅支持返回gcj02
altitudeBoolean传入 true 会返回高度信息,由于获取高度需要较高精确度,会减慢接口返回速度App和字节跳动小程序不支持
geocodeBoolean默认false,是否解析地址信息仅App平台支持
successFunction接口调用成功的回调函数,返回内容详见返回参数说明。
failFunction接口调用失败的回调函数
completeFunction接口调用结束的回调函数(调用成功、失败都会执行)
先看效果展示

在这里插入图片描述
还可以调用自带APP导航到目的地。
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
看完了是不是觉得和你的需求很像嘞,那开始吧,so easy。
-_-

开始工作

  1. 下载微信开发者工具,下载地址 稳定版即可。安装完成后需要将小程序的安装目录设置到uniapp中,供uniapp启动使用(也需要打开微信开发者工具的端口)
    打开微信小程序 设置——>通用设置——>安全,打开服务端口(如图所示)
    在这里插入图片描述
    在uniapp中点击工具——>设置——>运行配置
    在这里插入图片描述
  2. 在uniapp本项目中打开manifest.json。选择微信小程序配置,微信小程序配置AppID,因为我们要配置小程序的权限配置,因此需要在这里打勾,然后选择申请原因。
    在这里插入图片描述
  3. 开始上代码。
    先上一个定位的代码,定位表示获取微信给的经度和纬度之后直接打开地图,此时使用的是自己的位置,因为是自己的位置,所以这里没法导航
<template>
	<view>
		
	</view>
</template>

<script>
	export default {
		onLoad(){
			this.myLocation();
		},
		data() {
			return {
				
			}
		},
		methods: {
			myLocation(){
				uni.getLocation({
				    type: 'gcj02', //返回可以用于uni.openLocation的经纬度
				    success: function (res) {
						//this.longitude=res.longitude;
						//this.latitude=res.latitude;
						console.log(res.latitude);
						console.log(res.longitude);
				    uni.openLocation({
				     	            latitude: Number.parseFloat(res.latitude),
				     	            longitude: Number.parseFloat(res.longitude),
				     				address: location,
				     	            success: function () {
				     	               // console.log('success');
				     	            }
				     });
				    }
				})
			}
		}
	}
</script>

<style>

</style>

4.这里再看一个传入经度和纬度的,这里的经度和纬度我们应该从后台获取,这里为了省事,我直接用了一个方法。

<template>
	<view>
		
	</view>
</template>

<script>
	export default {
		onLoad(){
			this.tomap(117.26061,31.8512,'安徽省合肥市蜀山区人民政府')
		},
		data() {
			return {
				
			}
		},
		methods: {
			
			tomap(longitude,latitude,location){
				uni.getLocation({
				    type: 'gcj02', //返回可以用于uni.openLocation的经纬度
				    success: function (res) {
						console.log("latitude",Number.parseFloat(latitude));
						console.log("longitude",Number.parseFloat(longitude));
				    uni.openLocation({
						
				     	            latitude: Number.parseFloat(latitude),
				     	            longitude: Number.parseFloat(longitude),
				     				address: location,
				     	            success: function () {
				     	               // console.log('success');
				     	            }
				     });
				    }
				})
			}
		}
	}
</script>

<style>

</style>

最后整合的代码如下

<template>
	<view>
		
	</view>
</template>

<script>
	export default {
		onLoad(){
		//获取当前位置的地图(不可以导航,出发点和目标点一致,因距离太短 无法导航)
			//this.myLocation();  //要么注释这个
			//获取后台位置的地图(可以导航,出发点和目标点不一致)
			this.tomap(117.26061,31.8512,'安徽省合肥市蜀山区蜀山政务中心') //要么注释这个 
		},
		data() {
			return {
				
			}
		},
		methods: {
			myLocation(){
				uni.getLocation({
				    type: 'gcj02', //返回可以用于uni.openLocation的经纬度
				    success: function (res) {
						//this.longitude=res.longitude;
						//this.latitude=res.latitude;
						console.log(res.latitude);
						console.log(res.longitude);
				    uni.openLocation({
				     	            latitude: Number.parseFloat(res.latitude),
				     	            longitude: Number.parseFloat(res.longitude),
				     				address: location,
				     	            success: function () {
				     	               // console.log('success');
				     	            }
				     });
				    }
				})
			},
			tomap(longitude,latitude,location){
				uni.getLocation({
				    type: 'gcj02', //返回可以用于uni.openLocation的经纬度
				    success: function (res) {
						console.log("latitude",Number.parseFloat(latitude));
						console.log("longitude",Number.parseFloat(longitude));
				    uni.openLocation({
						
				     	            latitude: Number.parseFloat(latitude),
				     	            longitude: Number.parseFloat(longitude),
				     				address: location,
				     	            success: function () {
				     	               // console.log('success');
				     	            }
				     });
				    }
				})
			}
		}
	}
</script>

<style>

</style>

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值