<van-field
title-width="80rpx"
model:value="{{ address }}"
center
clearable
label="位置"
placeholder="请输入位置"
border="{{ true }}"
type="textarea"
autosize>
<van-button wx:if="{{show}}" bindtap="choose" icon="location-o" slot="button" size="small" type="primary"></van-button>
<van-button wx:else bindtap="choose1" icon="location-o" slot="button" size="small" type="primary"></van-button>
</van-field>
<van-field
title-width="80rpx"
model:value="{{ address2 }}"
center
clearable
label="位置"
placeholder="请输入位置"
border="{{ true }}"
type="textarea"
autosize>
<van-button bindtap="choose2" icon="location-o" slot="button" size="small" type="primary"></van-button>
</van-field>
2. 后台
choose(){
wx.chooseLocation({
success:({address,name})=>{
this.setData({
address:address+' '+name
})
},
fail:({errMsg})=>{
if(errMsg==="chooseLocation:fail auth deny"){
this.setData({
show:false
})
}
}
})
},
choose1(){
wx.openSetting({
success:({authSetting})=>{
if(authSetting['scope.userLocation']){
this.setData({
show:true
})
this.choose()
}
}
})
},
choose2(){
wx.getSetting({
success:({authSetting})=>{
if(authSetting['scope.userLocation']===false){
wx.openSetting({
success:({authSetting})=>{
if(authSetting['scope.userLocation']===true){
wx.chooseLocation({
success:({address,name})=>{
this.setData({
address2:address+' '+name
})
},
})
}
}
})
}else{
wx.chooseLocation({
success:({address,name})=>{
this.setData({
address2:address+' '+name
})
},
})
}
}
})
},
async choose2(){
let res = await wx.$chooseLocationWithSetting();
this.setData({
address2:res
})
},
3. location.js
export let $chooseLocation = ()=>{
return new Promise((resolve,reject)=>{
wx.chooseLocation({
success:({address,name})=>{
resolve(address+' '+name)
},
})
})
}
export let $openSetting = ()=>{
return new Promise((resolve,reject)=>{
wx.openSetting({
success:async ({authSetting})=>{
if(authSetting['scope.userLocation']===true){
resolve()
}
}
})
})
}
export let $chooseLocationWithSetting = ()=>{
return new Promise((resolve,reject)=>{
wx.getSetting({
success:async ({authSetting})=>{
if(authSetting['scope.userLocation']===false){
await $openSetting()
let res = await $chooseLocation()
resolve(res)
}else{
let res = await $chooseLocation()
resolve(res)
}
}
})
})
}
wx.$chooseLocation=$chooseLocation
wx.$openSetting=$openSetting
wx.$chooseLocationWithSetting = $chooseLocationWithSetting