当前位置:网站首页>租房小程序自动定位城市
租房小程序自动定位城市
2022-08-02 17:16:00 【詹Sir(开源字节)】
微信小程序提供的只有获取到经纬度的接口没有直接获取城市的接口
方案一
小程序调用wx.getLocation()获取经纬度,然后调用高德的接口获取当前城市,代码如下:
// findLocation(){
// uni.showLoading({title:"定位中....",mask:true})
// uni.getLocation({
// type: 'gcj02',
// success: async res => {
// let { longitude, latitude } = res;
// let result = await wxGetAddress({ longitude, latitude });
// let province = result.regeocodeData.addressComponent.province
// let cityName = result.regeocodeData.addressComponent.city
// this.locationCity = cityName
// let lifeData = uni.getStorageSync('lifeData');
// let vuex_city = lifeData.vuex_city
// if(!vuex_city){
// this.$u.vuex('vuex_city', cityName);
// }
// uni.hideLoading();
// }
// });
// }
// import amapFile from '../../libs/amap-wx.130.js'
// const myAmapFun = new amapFile.AMapWX({
// // 申请的高德key值
// key: '4ef3b3b42d8bb823529908dc93414127'
// }); //创建一个实例化对象
// export default function wxGetAddress({longitude,latitude}) {
// //根据传递进来经纬度进行反解析,调用的是高德给的方法
// return new Promise((resolve, reject) => {
// myAmapFun.getRegeo({
// location: `${longitude},${latitude}`,
// success: (res) => {
// resolve(res[0])
// },
// fail: (err) => {
// resolve(null)
// }
// })
// })
// }
方案二
微信调用wx.getLocation()获取经纬度,审核过于麻烦,审核了很多次都不给通过,果断放弃。因此开源字节的租房小程序使用ip进行城市定位。代码如下:
findLocation(){
let that = this
uni.showLoading({title:"定位中....",mask:true})
this.$u.get("/api/profile/getRealCity").then(obj => {
let cityName = obj.msg
if(cityName){
this.locationCity = cityName
let lifeData = uni.getStorageSync('lifeData');
let vuex_city = lifeData.vuex_city
if(!vuex_city){
this.$u.vuex('vuex_city', cityName);
}
uni.hideLoading();
}else{
uni.request({
// url:'https://pv.sohu.com/cityjson?ie=utf-8',
url:'https://tianqiapi.com/ip?version=v9&appid=23035354&appsecret=8YvlPNrz',
success(resp) {
let ip = resp.data.ip
that.$u.get("/api/profile/getRealCityByIP?ip="+ip).then(obj => {
let cityName = obj.msg
if(cityName){
that.locationCity = cityName
let lifeData = uni.getStorageSync('lifeData');
let vuex_city = lifeData.vuex_city
if(!vuex_city){
that.$u.vuex('vuex_city', cityName);
}
uni.hideLoading();
}else{
that.$mytip.toast('定位失败')
}
uni.hideLoading();
});
}
})
}
});
}
通过方案二即可满足定位需求,需注意以下几个点:
1、我们的nginx被微信代理后无法获取到真实ip,因此使用第三方接口获取ip
2、微信小程序只能使用备案的域名,我们需要将获取ip的接口添加到白名单中
3、获取到ip后,再请求后台地址得到城市信息

以上代码在我们的开源项目中都能获取到,感兴趣的小伙伴可以前往我们的开源仓库
如若转载,请注明出处:开源字节 https://sourcebyte.cn/article/207.html
边栏推荐
- executeScript异步执行的时候没有返回值的原因
- Red and blue against experience sharing: CS from kill posture
- Oracle 11 g rac finished patch, dbca new patches of SQL database also needs to perform?
- 蔚来杯2022牛客暑期多校训练营5 ABCDFGHK
- vulnhub W34kn3ss: 1
- 【Redis】连接报错:Could not connect to Redis at 127.0.0.1:6379: Connection refused
- LeetCode·每日一题·
- 暴跌99.7%后,谁还在买卖「二舅币」?
- 阿里云关系型数据库RDS是干嘛额?
- nacos集群配置详解
猜你喜欢
随机推荐
Mini Program Graduation Works WeChat Gymnasium Reservation Mini Program Graduation Design Finished Product (8) Graduation Design Thesis Template
Navicat premium download and install 15 detailed tutorial
打补丁的日子,比写代码的日子难熬多了
Mysql——分组统计
二叉查找树的查找
ffmpeg编译后找不到libx264
npm install报gyp info it worked if it ends with ok
H5网页播放器EasyPlayer.js播放器界面的加载效果无法消失是什么原因?
红队实战靶场ATT&CK(一)
H.265视频流媒体播放器EasyPlayer.js集成时报错“SourceBuffer ”如何解决?
莱斯大学胡侠团队 ICML 2022 杰出论文: 新型图数据增强方法 G-Mixup|附作者对话
【Redis】连接报错:Could not connect to Redis at 127.0.0.1:6379: Connection refused
NoSQL之redis缓存雪崩、穿透、击穿概念解决办法
阿里云关系型数据库RDS是干嘛额?
ECCV 2022 | 清华&腾讯AI Lab提出REALY:重新思考3D人脸重建的评估方法
Continuous integration (4) Jenkins configuration alarm mechanism
暴跌99.7%后,谁还在买卖「二舅币」?
融云「 IM 进阶实战高手课」系列直播上线
蔚来杯2022牛客暑期多校训练营5 ABCDFGHK
Pytest学习笔记









