2013-06-05 51 views
0

我通过这个函数得到线长。折线长度

  google.maps.LatLng.prototype.kmTo = function(a){ 
    var e = Math, ra = e.PI/180; 
    var b = this.lat() * ra, c = a.lat() * ra, d = b - c; 
    var g = this.lng() * ra - a.lng() * ra; 
    var f = 2 * e.asin(e.sqrt(e.pow(e.sin(d/2), 2) + e.cos(b) * e.cos 
    (c) * e.pow(e.sin(g/2), 2))); 
    return f * 6378.137; 
} 

google.maps.Polyline.prototype.inKm = function(n){ 
    var a = this.getPath(n), len = a.getLength(), dist = 0; 
    for (var i=0; i < len-1; i++) { 
     dist += a.getAt(i).kmTo(a.getAt(i+1)); 
    } 
    return dist; 
} 

及用途:

alert('Line Length: '+ poly1.inKm() +''); 

一切工作。但我有一个小问题。 它显示我:>>线长度:8.854502612255438公里< <

位数是长我希望它仅显示8.8我我该怎么办呢?

对不起,我的英语!

回答

1

试着这么做:

Math.floor(x * 10)/10 

其中x是你想显示(8.854502612255438)的数量。

而不是地板(它会变成88.5到88),你可能想尝试一轮(这会变成88.5到89)。

编辑 - 啊不,这是行不通的将它,因为你的号码是在结束“公里”字符串(没有当场说)......

所以,尽量使用parseFloat这样的:

Math.floor(parseFloat(x, 10) * 10)/10 

你将不得不“公里”添加到字符串你的自我的结束,所以完整的事情就变得:

alert('Line Length: '+ (Math.floor(parseFloat(poly1.inKm(), 10) * 10)/10) +'km'); 
+0

它的工作!非常感谢你! –