2015-01-26 157 views
1

我使用谷歌地圖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個字符,但我有非常多的地方,我需要得到這個值,我想用更少的代碼 任何提案?

回答

8

看來你的緯度和長度都是數字(如果沒有,可能會有更好的選擇)。 JS中的數字有toFixed() method將它們轉換爲給定小數位數的字符串。

在你的情況下,(-74.80111590000001).toFixed(7)應該返回字符串"-74.8011159",我相信這是你想要的。它也將正確回合,其中substring不能夠(不知道數字如何工作)。

0

lodash v3.0.0已於上週發佈新String選項。

你可以使用新的trunc功能:

trunc

截取字符串,如果超過給定的最大字符串長度。 截斷字符串的最後一個字符被替換爲缺省爲「...」的省略字符串 。

https://lodash.com/docs#trunc

實施例:

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

這有同樣的問題是使用字符串:它不承認小數點後修剪。 'Math.round'或'Number.prototype.toFixed'應該足夠好。 – ssube 2015-01-26 19:37:20

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