当前位置:网站首页>租房小程序自动定位城市
租房小程序自动定位城市
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
边栏推荐
猜你喜欢
腾讯架构师是如何解释:Redis高性能通信的原理(精华版)
MySQL常用的日期时间函数
Mysql应用安装后找不到my.ini文件
Numpy those things
小程序毕设作品之微信体育馆预约小程序毕业设计成品(5)任务书
阿波罗 planning代码-modules\planning\lattice\trajectory_generation\PiecewiseBrakingTrajectoryGenerator类详解
【C语言刷题】指针入门三题|字符串长度、字符串复制、两数交换
Cpolar application example of data acquisition equipment
npm install报gyp info it worked if it ends with ok
The days of patching are more difficult than the days of writing code
随机推荐
Mysql——分组统计
融云「 IM 进阶实战高手课」系列直播上线
Nacos环境隔离
小程序毕设作品之微信体育馆预约小程序毕业设计成品(5)任务书
二舅“反转”了?
默认参数的代码实现及日期的注入与显示
【C语言刷题】指针入门三题|字符串长度、字符串复制、两数交换
SQL语句基础
Nacos配置中心工作原理(超简单)
白话电子签章原理及风险
ES: Promise的基本用法
DeepMind 首席科学家 Oriol Vinyals 最新访谈:通用 AI 的未来是强交互式元学习
使用lodash替换js字符串中的变量
Oracle 11g rac打完补丁,dbca新建数据库还需要执行应用补丁的sql吗?
Five speakers: seventy genius_platform software platform development 】 【 turn YUY2 RGB24 implementation source code
Security First: Tools You Need to Know to Implement DevSecOps Best Practices
「全球数字经济大会」登陆 N 世界,融云提供通信云服务支持
golang源码分析(7):chan
Gartner发布,年度Challenger!
NIO Cup 2022 Niu Ke Summer Multi-School Training Camp 5 ABCDFGHK