js对地理坐标的精确度限制,截取固定长度的字符串的方法
起因
最近的小程序项目中涉及到了对地理坐标的获取,原型中给出的小数点位数很长,但是一直没有仔细注意过, 直到真机测试时才发现开发工具给出的位数和真机实际获取到的数据长度是不一样的,所以就自作主张截取到了八位,也就是法一,直接把获取到的数据长度截到八位。(因为并排放正好占满整行...)。但是后面感觉不太对,因为仔细观察了一下原型好像小数点后位数是一样的?不放心就去百度了一下,因为项目获取当前地理坐标对用户进行救援,不敢马虎。然后发现果然是有特殊要求的。地理坐标要求精确到小数点后七位。所以就想到了JS有直接对数据小数点后的位数进行限制的方法,也就是法二。分享出来做个笔记。因为是小程序项目,部分实现可能与web端不一样,但是思路是一样的,方法也是一样的,只是赋值不太一样,感兴趣的可以参考小程序官方文档。
法一
如果获取到的数据长度大于8,就截取长度为8的字符串赋值回去
w3c对该函数的介绍
// 将地理坐标精确到8位
if (options.latitude.length > 8) {
let latitude = options.latitude.substr(0,8);
that.setData({
'info.latitude': latitude
})
}
if (options.longitude.length > 8) {
let longitude = options.longitude.substr(0,8);
that.setData({
'info.longitude': longitude
})
}
法二
直接使用JS中对数据的操作函数实现 w3c对该函数的介绍
// 将地理坐标精确到小数点后七位
let latitude = Number(options.latitude).toFixed(7);
let longitude = Number(options.longitude).toFixed(7);
that.data.info.latitude = latitude;
that.data.info.longitude = longitude;
that.setData({
info: info
})