谷歌方向API的旅行时间与实时谷歌地图不同

7

我现在正在我的项目中使用谷歌方向API,我还需要包括交通情况在内的两个地点之间的预计旅行时间。因此,根据谷歌方向API文档,我将出发时间:Thursday 07-January-2016 time: 14:10 PM ( 1452175200 )传递给API。

请查看实时谷歌地图和谷歌方向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

两个响应必须相同或大致相同,但是这里我们可以看到巨大的差异。有人能给我建议吗?


您是否提供 Google Maps API for Work 的 API 密钥? - MrUpsidown
AIzaSyC7h7m5bRs-BZwk0XTXEQTB74dZujeLzZs - Raghbendra Nayak
这并没有告诉我这是否是“专业版”密钥(适用于Work客户的API)。顺便说一下,你应该避免像那样公开你的API密钥。如果你正确定义了引荐者,那么就不会有问题,但我认为最好还是自己保留... - MrUpsidown
1
好的,我应该使用专业版密钥吗?(我需要添加我的信用卡信息,然后再生成一次吗?) - Raghbendra Nayak
抱歉,可能我在文档中误读了。实际上文档中写道,它只能在"请求包含 API 密钥或 Google Maps API for Work 客户端 ID"时才能正常工作。因此,一个标准的 API 密钥应该是有效的。 - MrUpsidown
2个回答

5

时区复杂度

API接受UTC时间作为出发时间。

当选择“出发”时,似乎实时谷歌地图会采用出发地的时区(也许是到达地的时区,当选择“到达”时)。

错误来源

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

您对于2016年1月7日14:10 PM的实时谷歌地图响应实际上意味着洛杉矶时间下午2:10,这转换为协调世界时的2016年1月7日星期四22:00:00(departure_time = 1452204600)。

结果验证

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

  • 通常需要28分钟至1小时5分钟
  • 通常需要35分钟至1小时
  • 通常需要30分钟至1小时5分钟

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

  • 最佳猜测:39分钟
  • 悲观情况:1小时1分钟
  • 乐观情况:28分钟

注:要获取与您的API结果对应的实时地图结果,请选择“出发时间”=上午6:00。


很有趣,我们同时想到了相同的答案... 只是顺便提一下,洛杉矶是PST而不是IST,IST代表“印度、爱尔兰或以色列标准时间”,除非我漏掉了什么;-) - MrUpsidown
@MrUpsidown 哈哈,是的!我指的是印度标准时间(因为提问者在印度搜索,所以他做出了这个假设)。(在 PS 中的 6am 出发时间是在 PST 中)。 - jatinderjit
谷歌地图结果:https://www.google.com/maps/dir/LIG+广场,Old+Palasia,Indore,Madhya+Pradesh,India/Bhawarkuan+警察局,AB+Road,Bhavarkuan,Indra+Puri+Colony,Indore,Madhya+Pradesh,India/@22.7130291,75.8599915,14z/data=!3m1!4b1!4m16!4m15!1m5!1m1!1s0x3962fd4f37bcbb7d:0xc1c2490e471e5a71!2m2!1d75.8898349!2d22.7327916!1m5!1m1!1s0x3962fce50167a359:0x6585928e0ae7d0b3!2m2!1d75.8674657!2d22.6921907!2m2!7e2!8j1452279600 - Raghbendra Nayak
对于您的搜索链接,出发时间为下午7:00(IST)= 下午1:30(UTC)==> departure_at = 1452259800。 请使用以下参数重试:origin=LIG+Square%2C+Old+Palasia%2C+Indore%2C+Madhya+Pradesh%2C+India&destination=Bhawarkuan+Police+Station%2C+AB+Road%2C+Bhavarkuan%2C+Indra+Puri+Colony%2C+Indore%2C+Madhya+Pradesh%2C+India&mode=driving&traffic_model=pessimistic&departure_time=1452259800&key=yourkey - jatinderjit
让我们在聊天中继续这个讨论 - Raghbendra Nayak
显示剩余4条评论

0

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

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

文档指定您可以将时间指定为自1970年1月1日UTC午夜以来的秒数的整数。

虽然不是很清楚,但我认为API希望您按UTC时间给出时间。

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

试一下,然后告诉我!


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接