0

我正在使用谷歌地图DistanceMatrixService()来获取谷歌地图中两点之间的方向和距离。但是,我从该服务获得的结果与 GoogleMaps 网站上显示的结果略有不同。

当网站显示 3 公里时,我得到 4 公里。

我知道使用 Places 而不是实际地址时可能会有所不同,但是我在 api 和 website 中都使用了坐标,结果仍然不同。

这是我的代码:

//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);

地图上的这些坐标给出了3,1 公里的距离,而服务请求上的距离是 4,8 公里。

我需要做什么才能获得实际距离?


编辑

在进行一些测试时,我注意到我可以通过传递完整地址而不是坐标来获得正确的距离。但这给了我两个问题:

  • 1:通常我只能访问坐标,因为它很容易存储/获取信息(必须更改系统的一些核心代码才能获取完整地址);
  • 2:当处理地址引用一个大位置的地方时,例如,一所大学,地址很大,起点并不总是它应该在的地方。所以我不断得到错误的位置和错误的距离。
4

1 回答 1

3

包含数字的带引号的字符串不是“坐标”(字符串被发送到地理编码器,并将导致位置是最近的“已知”地址),请使用 google.maps.LatLng 或 google.maps.LatLngLiteral 作为坐标。

文档中

目的地类型:数组<(string|LatLng|Place)>

包含目标地址字符串、LatLng 或 Place 对象的数组,用于计算距离和时间。必需的。

起源类型:数组<(string|LatLng|Place)>

包含原始地址字符串、或 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);
于 2016-11-14T14:57:18.427 回答