谷歌地图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
有没有简单的方法来实现这一目标?我查看了文档,但我没有看到任何设置方法。
感谢您提供的任何见解或帮助!
答案 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的代码。