如何设置Google Maps v3 API directionsService返回的结果的精度?

时间:2012-08-31 04:18:12

标签: google-maps-api-3

谷歌地图v3 directionsService返回有时比我想要的更长的纬度/长点。这是我可能打来的电话:

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

我真的想减少精确度。例如,我更喜欢将值精确到五位小数,如下所示:

Xa = 35.07700    
Ya = -85.08854

有没有简单的方法来实现这一目标?我查看了文档,但我没有看到任何设置方法。

感谢您提供的任何见解或帮助!

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:1)

Javascript uses double precision floating point numbers代表数据。如果要将该数据保存为字符串,则使用.toFixed()输出它可能是有意义的。但那将是你的代码,而不是Google的代码。