1

グーグルマップv3の方向サービスは、時々私が望むよりも長い緯度/経度のポイントを返します。これが私が行うかもしれない呼び出しです:

var request = {
    origin: start_position, 
    destination: end_position,
    travelMode: google.maps.DirectionsTravelMode.DRIVING
};

directionsService.route(request, function(response, status) {
    if (status === google.maps.DirectionsStatus.OK) {
        // do something with response, e.g. set the overview_path to a polyline;
    }
});

結果の応答は、ポイントに対して次の値を返す場合があります。

response.routes[0].legs[0].start_location.Xa = 35.077000000000005    
response.routes[0].legs[0].start_location.Ya = -85.08854000000001

どうしても精度を落としたい。たとえば、次のように小数点以下 5 桁の精度よりも値を優先します。

Xa = 35.07700    
Ya = -85.08854

これを達成する簡単な方法はありますか?ドキュメントに目を通しましたが、これを設定する方法についての言及はありません。

あなたが提供するかもしれない洞察や助けをありがとう!

4

2 に答える 2

3

まず第一に、.Xa と .Ya は使用しないでください。これらは、API の次のリリースで変更される可能性のある縮小された名前だからです。代わりに、文書化されたメソッド lat() および lng() を使用する必要があります。それで:

response.routes[0].legs[0].start_location.lat()= 35.077000000000005    
response.routes[0].legs[0].start_location.lng() = -85.08854000000001

小数を丸めたい場合は、標準の JavaScript メソッド .toFixed() を使用します。つまり、次のようになります。

var lat = response.routes[0].legs[0].start_location.lat().toFixed(5);// 35.07700    
var lon = response.routes[0].legs[0].start_location.lng().toFixed(5);// -85.08854
于 2012-08-31T04:36:54.790 に答える
1

Javascriptは、倍精度浮動小数点数を使用してデータを表します。そのデータを文字列として保存する場合は、.toFixed();を使用して出力するのが理にかなっている場合があります。しかし、それはあなたのコードであり、Googleのコードではありません。

于 2012-08-31T13:08:43.750 に答える