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.8 54502612255438km <<

数字が長すぎ8.8ます。どうすればいいのかだけ教えてほしいです。

私の英語でごめんなさい!

4

1 に答える 1

1

次のようなものを試してください:

Math.floor(x * 10) / 10

x は、表示しようとしている数値です (8.854502612255438)。

フロア (88.5 から 88 に変わる) の代わりに、ラウンド (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 に答える