Google方向API旅行时间与实时Google地图不同

时间:2016-01-04 09:54:44

标签: php google-maps-api-3

我正在项目中使用谷歌方向API现在我还需要两个地方之间的估计旅行时间,包括交通。所以我按照谷歌方向API文档传递出发时间Thursday 07-January-2016 time: 14:10 PM ( 1452175200 )

查看实时谷歌地图和谷歌方向API之间的区别,并建议我做错了什么。

Live google map response: (Thursday 07-January-2016 time: 14:10 PM )

https://www.google.com/maps/dir/Los+Angeles+International+Airport,+1+World+Way,+Los+Angeles,+CA+90045,+United+States/Beverly+Hills,+CA/@34.0077875,-118.4795875,12z/data=!3m1!4b1!4m17!4m16!1m5!1m1!1s0x80c2b0d213b24fb5:0x77a87b57698badf1!2m2!1d-118.40853!2d33.9415889!1m5!1m1!1s0x80c2bc04d6d147ab:0xd6c7c379fd081ed1!2m2!1d-118.4003563!2d34.0736204!2m3!6e0!7e2!8j1452175200

typically 28 min - 1 h 15 min

typically 35 min - 1 h 10 min

02:14 PM to 03:28 PM 1 h 14 min

****************************

Google direction API:

//Source address
$a = 'Los Angeles International Airport, 1 World Way, Los Angeles, CA 90045, United States'; 
//Destination address
$b = 'Beverly Wilshire, Beverly Hills (A Four Seasons Hotel), 9500 Wilshire Boulevard, Beverly Hills, CA 90212, United
        States';

//Pass source and destination address in google map API for PESSIMISTIC
$url = 'https://maps.googleapis.com/maps/api/directions/xml?origin='. urlencode($a).'&destination='. urlencode($b).'&departure_time=1452175200&mode=driving&traffic_model=pessimistic&key=AIzaSyC7h7m5bRs-BZwk0XTXEQTB74dZujeLzZs';
//output:  duration_in_traffic =  38 mins

//Pass source and destination address in google map API for OPTIMISTIC
$url = 'https://maps.googleapis.com/maps/api/directions/xml?origin='. urlencode($a).'&destination='. urlencode($b).'&departure_time=1452175200&mode=driving&traffic_model=optimistic&key=AIzaSyC7h7m5bRs-BZwk0XTXEQTB74dZujeLzZs';
//output:  duration_in_traffic = 27 mins

//Pass source and destination address in google map API for BEST_GUESS
$url = 'https://maps.googleapis.com/maps/api/directions/xml?origin='. urlencode($a).'&destination='. urlencode($b).'&departure_time=1452175200&mode=driving&traffic_model=best_guess&key=AIzaSyC7h7m5bRs-BZwk0XTXEQTB74dZujeLzZs';
//output:  duration_in_traffic = 30 mins

两种反应必须相同或近似,但在这里我们可以看到巨大的差异。谁能建议我?

2 个答案:

答案 0 :(得分:5)

时区复杂性

API采用UTC的departure_time。

似乎实时Google地图采用原点的时区,当'离开'被选中(也许是目的地,当选择“到达时”)。

错误来源

您的假设是实时Google地图时间是IST。

您在2016年1月7日14:10 PM的实时谷歌地图回复实际上意味着洛杉矶时间下午2:10,相当于2016年1月7日星期四,22:00:00 UTC(以及departure_time = 1452204600)。

结果验证

2016年1月7日下午2:10实时Google地图结果:

  • 通常为28分钟 - 1小时5分钟
  • 通常为35分钟 - 1小时
  • 通常为30分钟 - 1小时5分钟

从API获得相应时间的结果(departure_time = 1452204600):

  • best_guess:39分钟
  • 悲观:1小时1分钟
  • 乐观:28分钟

PS:要获取与您的API结果相对应的实时地图结果,请选择'离开时间= 6:00 AM。

答案 1 :(得分:0)

我没有机会尝试使用您的代码,但我怀疑问题可能出在departure_time参数上。

1452175200是1月7日。2016年 - 14:00:00 - 这是正确的

documentation指定您可以将自1970年1月1日午夜起的整数时间指定为整数。

目前还不是很清楚,但我认为API希望您将时间用作UTC。

由于洛杉矶是UTC-8,您应该相应调整时间戳。

试一试,让我知道!