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该怎么做?

对不起我的英语不好!

4

1 回答 1

1

尝试类似:

Math.floor(x * 10) / 10

其中 x 是您要显示的数字 (8.854502612255438)。

而不是 floor(它将变成 88.5 到 88),您可能想要尝试 round(它将变成 88.5 到 89)。

编辑-啊,不,那行不通,因为您的电话号码是结尾带有“ km”的字符串(没有发现)...

所以...尝试parseFloat像这样使用:

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

您必须在自己的字符串末尾添加“km”,所以完整的内容变为:

alert('Line Length:  '+ (Math.floor(parseFloat(poly1.inKm(), 10) * 10) / 10) +'km');
于 2013-06-05T12:27:32.840 回答