微信小程序获取经纬度所在城市
小程序的wx.getLocation()获得是经纬度并不包含地名,所以要通过经纬度用相应的地图转换出地名(本文使用的是百度地图)
// 获取坐标
onLoad: function (options) { wx.getLocation({ type: 'gcj02', //wgs84/gcj02 gltitude: true, isHighAccuracy: true, success: function (res) { console.log(res); console.log('纬度' + res.latitude); console.log('经度' + res.longitude); }, }) console.log('111222333sss'); let _this = this; let l=_this.data.latitude; console.log(l); },// 获取所在城市
lodeCity: function (longitude, latitude) { var me = this; wx.request({ url: 'https://api.map.baidu.com/reverse_geocoding/v3/?ak=获得的AK&location=' + latitude + ',' + longitude + '&output=json', data: {}, header: { 'Content-Type': 'application/json' }, success: function (res) { if (res && res.data) { console.log(res.data) console.log(res.data.result.addressComponent.city) var city = res.data.result.addressComponent.city; console.log('res...................'); me.setData({ city: city.indexOf('市') > -1 ? city.substr(0, city.indexOf('市')) :city }); console.log(city); }else{ me.setData({ city: '获取失败' }); } } }) },1.2 百度地图的准备工作
1.在使用百度地图API之前,首先要获得百度地图的密钥ak,ak由百度地图方生成;
2.打开百度地图开放平台,导航栏处选择 “开发文档” > “微信小程序JavaScript API”,在“入门指南”处有详细介绍怎么生成密钥ak,本文不再介绍。
参考文档:http://lbsyun.baidu.com/index.php?title=wxjsapi/guide/key
3.复制生成好的ak,把ak粘贴到小程序中。其实,百度地图有提供小程序使用的地图api的压缩包,但是出于小程序发布时对大小的限制,我选择了使用链接。
百度地图线上转换链接地址:https://api.map.baidu.com/geocoder/v2/?ak=获得的AK&location=' + latitude + ',' + longitude + '&output=json'
4.使用小程序的账号登录微信公众平台(https://mp.weixin.qq.com/),在“设置” 中选择 “开发设置”,把百度地图api的url添加到request合法域名中。
注意:百度地图提供的有关于小程序API的下载包,不想使用链接地址的可以使用下载包,出于小程序发布时对大小的限制,本文使用的是链接地址未使用下载包。
这个开发设置我是在“开发”--“开发管理”找到的
5.此时准备工作完成,便可以直接在小程序中根据经纬度转换出相应的地名了
最后:遇到API报"APP 服务被禁用":
将请求地址 https://api.map.baidu.com/geocoder/v2/
换成
https://api.map.baidu.com/reverse_geocoding/v3/
参考链接:https://www.cnblogs.com/liuyuanfang/p/9748074.html
解决百度地图API报"APP 服务被禁用"的参考链接:https://blog.csdn.net/weixin_42729938/article/details/116857796