2016-11-14 83 views
0

我使用Google地图DistanceMatrixService()获取GoogleMaps中2个点之间的方向和距离。但是,我从服务中获得的结果与GoogleMaps网站上显示的结果略有不同。DistanceMatrixService给出与Google地图不同的距离

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

我知道它可以在使用位置而不是实际地址时有所不同,但我在坐标和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); 

上的服务请求3,1km和map gives a distance这些坐标是4,8公里。

我需要做些什么来获得实际距离?


编辑

虽然做了一些测试,我发现我可以通过将完整的地址,而不是坐标得到适当的距离。但这给了我两个问题:

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

4.8公里,圆一个回合的路线,由于起源是上桥(它看起来像“坐标系”作为字符串的“错误”侧返回完全相同的结果)。你真的想要“开车”吗?步行距离会工作吗? – geocodezip

回答

2

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

the documentation

目的地类型:Array <(字符串|经纬度|地方)>

含有目的地地址字符串,或者经纬度,或者放置物品,向其中的阵列来计算距离和时间。需要。

起源类型:Array <(字符串|经纬度|地方)>

含有起源地址字符串,或者经纬度,或者放置物品的阵列,从该计算出的距离和时间。需要。

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

根据你的评论和回答,我试着照你说的去做,但我得到了同样的结果。我甚至尝试过不同的位置和坐标,但我总是以相同类型的结果结束。使用坐标时,距离总是不同。只有使用完整的地址,我才能得到适当的距离,但是我提到的问题有两个问题。 – celsomtrindade

相关问题