微信小程序首页定位
使用uni-app开发微信小程序.
之前在app.js定位,然后传给首页,这样获取不到值,就把定位代码写在了首页.
<template>
<view class="content">
<view class="">
定位地址:{{city}}
</view>
</view>
</template>
<script>
export default {
data() {
return {
locationStatus:false,//是否定位过
city:'定位中...'
}
},
onShow() {
// 判断是否定位过,如果没有定位,就执行定位
if(this.locationStatus==false){
this.dingwei()
uni.setStorageSync('locationStatus',true)
this.locationStatus=uni.getStorageSync('locationStatus')
}else{ //若定位过,直接把本地的定位地址赋值
this.city=uni.getStorageSync('city')
}
},
onLoad() {
},
methods: {
// 打开设置
openConfirm(){
uni.showModal({
title: '请求授权当前位置',
content: '需要获取您的地理位置,请确认授权',
success:(res=>{
if(res.confirm){
uni.openSetting();// 打开地图权限设置
}else if(res.cancel){
uni.showToast({
title: '你拒绝了授权,无法获得周边信息',
icon: 'none',
duration: 1000
})
}
})
})
},
// 定位
dingwei(){
var that = this
// 授权
uni.authorize({
scope: 'scope.userLocation',
success() {
// 定位
uni.getLocation({
type: 'gcj02',
success: function (res) {
console.log('当前位置的经度:' + res.longitude);
console.log('当前位置的纬度:' + res.latitude);
var longitude = res.longitude
var latitude= res.latitude
var location = latitude+','+longitude
console.log(location)
// 逆解析地址 个人秘钥
wx.request({
url: 'https://apis.map.qq.com/ws/geocoder/v1/?key=OB4BZ-D4W3U-B7VVO-4PJWW-6TKDJ-WPB77&get_poi=1',
data:{
location:location
},
method: "get",
success: (res) => {
console.log(res.data.result.address);
uni.setStorageSync('city',res.data.result.address)
that.city=uni.getStorageSync('city')
}
});
}
});
},
fail(){ // 拒绝授权
that.openConfirm();
console.log("你拒绝了授权,无法获得周边信息")
}
})
}
}
}
</script>
<style>
</style>