我正在使用Google地图DistanceMatrixService()
获取GoogleMaps中2个点之间的路线和距离。但是,我从该服务获得的结果与GoogleMaps网站上显示的结果略有不同。
当网站显示3公里时,我得到4公里。
我知道使用Places而不是实际地址会有所不同,但我在api和网站都使用了坐标,结果仍然不同。
这是我的代码:
//Just for example
var origin = '-27.5970141,-48.5614466';
var destination = '-27.5927353,-48.5556316';
var service = new google.maps.DistanceMatrixService();
service.getDistanceMatrix({
origins: [origin],
destinations: [destination],
travelMode: google.maps.TravelMode.DRIVING,
unitSystem: google.maps.UnitSystem.METRIC
}, callback);
map gives a distance上的这些坐标为3,1km,服务请求为4.8 km。
我需要做些什么来获得实际距离?
修改
在做一些测试时,我注意到我可以通过传递完整的地址而不是坐标来获得适当的距离。但这给了我两个问题:
答案 0 :(得分:2)
引用包含数字的字符串不是"坐标" (字符串会发送到地理编码器,并会生成最接近"已知"地址的位置),请使用google.maps.LatLng或google.maps.LatLngLiteral作为坐标。
目的地类型:数组<(字符串| LatLng |地方)>
包含目标地址字符串,或LatLng或Place对象的数组,用于计算距离和时间。必需的。
来源类型:数组<(字符串| LatLng |地方)>
包含原点地址字符串,LatLng或Place对象的数组,用于计算距离和时间。必需的。
//Just for example
var origin = new google.maps.LatLng(-27.5970141,-48.5614466);
var destination = new google.maps.LatLng(-27.5927353,-48.5556316);
var service = new google.maps.DistanceMatrixService();
service.getDistanceMatrix({
origins: [origin],
destinations: [destination],
travelMode: google.maps.TravelMode.DRIVING,
unitSystem: google.maps.UnitSystem.METRIC
}, callback);