目录
首先在使用小程序时,请求的接口一定要去配置合法域名,才能够进行接下来的操作。
1.配置位置权限
在app.json中添加如下代码:
"permission": {
"scope.userLocation": {
"desc": "你的位置信息将用于小程序位置接口的效果展示"
},
}
2.获取当前自身经纬度
我们通过wx.getLocation这个api进行获取:
wx.getLocation({
type: 'gcj02',
success(res) {
that.setData({
currentLatitude: res.latitude,
currentLongitude: res.longitude
});
})
在这里我们使用了变量来存放当前经纬度,并且使用that.setData({})方法来赋值,因为this的指向可能不明确,配置如下:
data: {
currentLatitude:'',
currentLongitude:'',
}
onLoad(options) {
let that = this;
}
除了gcj02,还有以下几种地理位置坐标系类型可以选择:
- wgs84:表示使用WGS84坐标系,也是全球卫星定位系统(GPS)所采用的坐标系。
- bd09:表示使用百度坐标系,在国内常用的一种坐标系,适用于百度地图。
- bd09ll:表示使用百度经纬度坐标系,与bd09相似,但在经度上更接近真实的经度值。
3. 请求接口拿到返回经纬
wx.request({
url: '自己所使用的接口',
method: 'POST',
data: {},
success: function(res) {
console.log(res);
that.setData({
list: res.data.data.list
});
}
})
上述代码呢list是我在data中的一个变量,用来存放我包含经纬度数据的数组,声明方式为list:[]
4. 循环取每一项的经纬
list数据格式如下:
for (let i = 0; i < that.data.list.length; i++) {
let item = that.data.list[i];
let lat = parseFloat(item.latitude);
let lon = parseFloat(item.longitude);
}
that.setData({
list: that.data.list
});
将item.latitude
和item.longitude
转换为浮点数(parseFloat()
)的目的是将字符串转换为数值型数据。这是因为经纬度通常以字符串的形式存储,在进行距离计算等数值操作时,需要将其转换为数值类型进行计算。通过使用parseFloat()
函数,可以将字符串解析成浮点数,以便后续的数值计算。