经纬度限制最大长度

Latitude and Longitude limit max length

我使用google地图Api,在任何情况下我的纬度和经度值都非常长,例如在控制台中:

results[0].geometry.location.lng()
-74.80111590000001
results[0].geometry.location.lat()
42.055163

我想在逗号后得到最多 7 个字符

results[0].geometry.location.lng().toString().substring(0,10)
"-74.801115"

但是如果逗号后的数字不是 7 个字符,.. 为此我可以使用 indexOf('.') 并在逗号后得到 7 个字符,但我有很多地方需要得到这个值,我想用更少的代码 有什么建议吗?

看来你的经纬度是数字(如果不是,可能有更好的选择)。 JS 中的数字有 toFixed() method 将它们转换为具有给定小数位数的字符串。

在您的情况下,(-74.80111590000001).toFixed(7) 应该 return 字符串 "-74.8011159",我相信这是您想要的。它还会正确舍入,这是 substring 做不到的(不知道数字是如何工作的)。

lodash v3.0.0 上周发布了新的 String 选项。

您可以使用新的 trunc 函数:

trunc

Truncates string if it is longer than the given maximum string length. The last characters of the truncated string are replaced with the omission string which defaults to "…".

https://lodash.com/docs#trunc

示例:

_.trunc('-74.80111590000001', 7); // -74.801

这是一种更加灵活和通用的方法,因此可以在整个脚本中重复使用一个函数来将数字四舍五入到给定的小数位数。

function roundNumber(value, decimals){
    return Number(Math.round(value + 'e' + decimals) + 'e-' + decimals);
}

并使用...

var rounded_lng = roundNumber(results[0].geometry.location.lng(), 7);
var rounded_lat = roundNumber(results[0].geometry.location.lat(), 7);