当前位置:网站首页>租房小程序自动定位城市
租房小程序自动定位城市
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
边栏推荐
- Red and blue against experience sharing: CS from kill posture
- npm install 报错问题解决合集
- 用函数递归的方法解决汉诺塔问题
- Navicat premium download and install 15 detailed tutorial
- golang源码分析(7):chan
- 【Redis】连接报错:Could not connect to Redis at 127.0.0.1:6379: Connection refused
- Redis的使用--集群模式
- ES: Promise的基本用法
- 脉脉上的相亲生意
- golang源码分析(3):thrift
猜你喜欢
[300+ selected big factory interview questions continue to share] Big data operation and maintenance sharp knife interview questions column (10)
文件上传很难搞?10分钟带你学会阿里云OSS对象存储
【Redis】连接报错:Could not connect to Redis at 127.0.0.1:6379: Connection refused
MYSQL一站式学习,看完即学完
navicat创建连接 2002-can‘t connect to server on localhost(10061)且mysql服务已启动问题
Google Earth Engine APP—— 一个不用写代码可以直接下载相应区域的1984-2021年的GIF遥感影像动态图
cpolar应用实例之多设备数据采集
vulnhub W34kn3ss: 1
如何生成随机数+原理详细分析
Navicat for mysql cracked versions installed
随机推荐
golang源码分析(6):sync.Mutex sync.RWMutex
蔚来杯2022牛客暑期多校训练营5 ABCDFGHK
golang源码分析(4):select
红蓝对抗经验分享:CS免杀姿势
What is an APS system?What should I pay attention to when importing APS?Worth watching again and again
安全至上:落地DevSecOps最佳实践你不得不知道的工具
golang源码分析(8):m、p、g、shedt、sudog
MySQL常见面试题汇总(建议收藏!!!)
Navicat premium download and install 15 detailed tutorial
创新云集技术咖,工赋汇聚实战派:2022工赋开发者峰会
打补丁的日子,比写代码的日子难熬多了
Inconsistency between oracle and mysql statement results
Navicat 连接Oracle时提示oracle library is not loaded的问题解决
Oracle分析归档日志内容时,发现很多null?
golang 计算器实现
什么是SVN(Subversion)?
全面认识二极管,一篇文章就够了
SQL语句基础
动力电池扩产潮,宁德时代遭围剿
MySQL索引