纬度和经度限制最大长度

时间:2015-01-26 19:26:09

标签: javascript google-maps substring

我使用谷歌地图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个字符,但我有很多地方在哪里我需要获得这些值,我想使用代码较少的东西 任何提案?

3 个答案:

答案 0 :(得分:8)

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

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

答案 1 :(得分:0)

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

您可以使用新的trunc功能:

  

trunc

     

如果字符串长于给定的最大字符串长度,则截断字符串。   截断字符串的最后一个字符将替换为   省略字符串,默认为" ..."。

https://lodash.com/docs#trunc

示例:

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

答案 2 :(得分:0)

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

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);