现在很多企业商家为了提供更准确的服务,基本都要获取用户当前所在的地理位置,城市是其中最基本的。而微信小程序官方提供的API只能获取当前地理位置的经纬度,需要经过第三方转换才可以得到我所需的城市名,经过多次测试,终于找到方法。
这两个方法都需要用到小程序官方的API来获取经纬度,这个API的信息如下
wx.getLocation(OBJECT)
地址:https://mp.weixin.qq.com/debug/wxadoc/dev/api/location.html#wxgetlocationobject
获取当前的地理位置、速度。当用户离开小程序后,此接口无法调用;当用户点击“显示在聊天顶部”时,此接口可继续调用。
OBJECT参数说明:
success返回参数说明:
示例代码:
使用实例代码就可以获取经纬度:可以从控制台进行查看:
latitude:接下来用到的纬度
longitude:接下来用到的经度
用这个API结合另外两个API即可得到想要的地理位置。
第一个是使用易源数据的api 地址与经纬度互转 https://www.showapi.com/api/lookPoint/238/2
首先在左侧的 接入点列表 选择 经纬度-->地址 。
这个api需要的请求参数有三个:
知道这些就好办了,直接使用wx.request(OBJECT)按照下图操作即可获取城市。
输出的结果如下:
方法到此结束,附上完整代码:
//index.js
//获取应用实例
var app = getApp()
Page({
onLoad: function () {
console.log('onLoad')
var that = this
//调用应用实例的方法获取全局数据
app.getUserInfo(function(userInfo){
//更新数据
that.setData({
userInfo:userInfo
})
})
wx.getLocation({ //官方获取经纬度api
type: 'wgs84',
success: function (res) {
console.log(res)
var latitude = res.latitude //纬度
var longitude = res.longitude //经度
var speed = res.speed //速度,这里用不到
var accuracy = res.accuracy //精确度
wx.request({ //向服务器发送请求转换地理位置
url: 'http://route.showapi.com/238-2',//请求的url
data:{ //请求的参数
showapi_appid:'42391',//易源应用key:申请账号可获取
showapi_sign:'bb5250042ace47a088290abf88229a38',//数字签名:申请账号可获取
lat:latitude,//纬度
lng: longitude,//经度
from:1// from
},
success:function (res){
console.log(res)
// console.log("当前城市:"+res.data.showapi_res_body.addressComponent.city)
}
})
}
})
}
})
网友评论