sadjv3_user/pages/index/searchAddress.vue

264 lines
6.3 KiB
Vue

<template>
<view class="content">
<view class="flex align-center index-mian">
<uni-search-bar placeholder="请输入地址" @service="serviceTrue" @confirm="search" :cancelext="'取消'" v-model="searchValue" @input="input"
@clear="clear">
</uni-search-bar>
<view class="search-btn" @click="searchBtn" >
搜索
</view>
</view>
<view class="content-list">
<view class="content-list-top">
<view class="list-left">
<image class="tubiao" src="../../static/orderDetail/dingwei.png" mode=""></image>
<span>{{adderssData[0].name}}</span>
</view>
<view class="list-right" @click="shuaxin">
<span>重新定位</span>
<image class="tubiao" src="../../static/shuaxin.png" mode=""></image>
</view>
</view>
<view class="list" @click="activeAdder(item)" v-for="(item,index) in adderssData" :key="index">
{{item.name}}
</view>
</view>
</view>
</template>
<script>
export default{
data(){
return{
latitude:'43.896819',
longitude:'125.430478',
serviceTrue:true,
searchValue: '',
address:'https://restapi.amap.com/v3/geocode/regeo',
gaojiIp:'https://restapi.amap.com/v5/place/text',
gaojiIp1:'https://restapi.amap.com/v5/ip/location',
gaojiIp2:'https://restapi.amap.com/v3/geocode/geo',
Key1:'4f23770b6e53b96e7d0661a7ccfb9c21',
Key2:'ad684a15ebbb6f5d12c407a3d593c949',
adderssData:[],
textAdderss:'',
current:''
}
},
onLoad(e) {
var that=this;
if(e){
that.textAdderss=e.text
that.current=e.current
}
uni.showLoading({
title: '加载中...'
})
// that.getDingwei()
uni.getLocation({
type: 'gcj02',
geocode: true, //设置该参数为true可直接获取经纬度及城市信息
highAccuracyExpireTime: 500,
success: function(res) {
that.latitude = res.latitude
that.longitude = res.longitude
that.getDingwei()
},
fail: function(e) {
console.log("获取信息失败,请重试!",e)
}
})
},
methods:{
activeAdder(item){
if(this.textAdderss=='index'){
uni.setStorageSync('cityAdderss',item)
uni.switchTab({
url:'/pages/index/index'
})
}else{
item.current=this.current
uni.setStorageSync('cityTherapist',item)
uni.switchTab({
url:'/pages/therapist/therapist'
})
}
},
shuaxin(){
this.getDingwei()
},
getDingwei(){
var that=this;
let longitude = that.longitude;
let latitude = that.latitude;
let amapKey = that.Key2; // 替换为你的高德地图API Key
let url = `https://restapi.amap.com/v3/geocode/regeo?key=${amapKey}&location=${longitude},${latitude}&radius=3000`;
uni.request({
url: url,
success: (response) => {
uni.hideLoading();
if(response.data && response.data.regeocode) {
let address = response.data.regeocode.formatted_address;
let province = response.data.regeocode.addressComponent.province;
let city = response.data.regeocode.addressComponent.city;
let district = response.data.regeocode.addressComponent.district;
let township = response.data.regeocode.addressComponent.township;
let latadd = address.replace(province,'').replace(city,'').replace(district,'').replace(township,'')
that.getAdderrs(latadd,city)
// 此处可以将地址设置到页面数据中,或者进行其他操作
} else {
uni.hideLoading();
uni.showToast({
icon:'error',
title:'逆地理编码失败'
})
console.log('逆地理编码失败', response.data);
}
},
fail: (error) => {
uni.hideLoading();
uni.showToast({
icon:'error',
title:'网络请求失败'
})
console.log('网络请求失败', error);
}
});
},
input(res) {//搜索 输入框
this.searchValue=res;
},
searchBtn(){//搜索按钮
this.getDingwei()
},
getAdderrs(latadd,city){
var that=this;
var dizhi={
key:that.Key2,
keywords:that.searchValue!=''?that.searchValue:latadd,
// types:'120000',
region:city,
city_limit:true,
show_fields: "name,address",
}
uni.request({
url:that.gaojiIp,
data:dizhi,
method:'GET',
success(res) {
if (res.statusCode ==200) {
console.log("获取城市名称成功", res.data.pois)
that.adderssData=res.data.pois
} else {
console.log("获取信息失败,请重试!")
}
}
});
}
}
}
</script>
<style scoped>
.list-left,.list-right{
display: flex;
flex-direction: row;
align-items: center;
}
.list-left span{
margin-left: 5px;
}
.list-right span{
margin-right: 5px;
}
.tubiao{
width: 15px;
height: 18px;
}
.content-list-top{
width: 100%;
display: flex;
flex-direction: row;
align-items: center;
justify-content: space-between;
margin: 20px 0px;
}
.list{
width: 100%;
height: 40px;
line-height: 40px;
color: #000;
font-size: 14px;
border-bottom: 1px solid #ccc;
}
.content-list{
width: 95%;
margin: 0 auto;
}
/deep/.uni-searchbar__cancel{
display: none;
}
.search-btn{
text-align: center;
line-height: 31px;
color: #fff;
width: 130rpx !important;
height: 32px !important;
margin-right: 20rpx;
border-radius: 50rpx !important;
background: linear-gradient(90deg, #019c88, #2fbf93)!important;
}
.index-line{
width: 100%;
display: flex;
flex-direction: row;
justify-content: space-between;
align-items: center;
}
/deep/.uni-searchbar__box-icon-search,.search-btn{
height: 60rpx;
background: #18A689;
border-radius: 31rpx;
}
/deep/.uni-searchbar__box{
height: 32px;
border-radius: 15px !important;
background-color: #fff !important;
border: 1rpx solid #019c88;
padding: 0px;
display: flex;
flex-direction: row;
flex-flow: row-reverse;
position: relative;
justify-content: center;
}
/deep/.uni-searchbar{
width:80%;
border-radius: 31rpx;
margin-left: 6rpx;
}
.index-mian-select image{
width: 16px;
height: 8px;
margin-left: 5px;
}
.index-mian-select{
display: flex;
flex-direction: row;
align-items: center;
}
.index-mian{
width: 98%;
margin: 4rpx auto;
display: flex;
flex-direction: row;
justify-content: space-between;
align-items: center;
}
.content{
width: 100%;
height: 100vh;
background-color: #fff;
}
</style>