gpt4 book ai didi

php - 谷歌距离矩阵 JSON 最短路径 (PHP)

转载 作者:可可西里 更新时间:2023-10-31 23:53:46 27 4
gpt4 key购买 nike

一位客户要求我计算从某个地址到固定地址的距离。我使用 Google Distance Matrix API 制作了一个 PHP 脚本来计算距离。但是,这并没有给我最短的距离。它似乎只提供谷歌认为最好的任何东西。例如,我的脚本返回 2 个地址之间的 11.7 公里,而 Google map 给出这些结果:

  • 8.7公里
  • 14公里
  • 13.8公里

如您所见,8.7 公里与 11.7 公里的差距非常大。

我会考虑 Google Distance Matrix API 以外的其他选项。

我的脚本:(简而言之)

if ($this->getVar('to', false) && $this->getVar('to', false) != '') {
$to = urlencode(urldecode($this->getVar('to', false)));
$url = 'http://maps.googleapis.com/maps/api/distancematrix/json?origins=Etterbeeksesteenweg+180+Brussel&destinations='.$to.'&mode=driving&language=nl-BE&sensor=false';
$this->view->response = json_decode(file_get_contents($url));
}

我尝试添加 &alternatives=true,但没有成功。

最佳答案

DistanceMatrixService(还有 DirectionsService)通常不会返回最短路线,它们会返回最快路线。

使用 DirectionsService 而不是将附加参数 alternatives 设置为 true:

http://maps.googleapis.com/maps/api/directions/json?origin=bomerstraat%2018,%20peer&destination=kievitwijk%2028,%20helchteren&alternatives=true&sensor=false

当您添加 alternatives 参数时,您还会获得备选路线,当您检查返回的结果时,您会看到它还包含 9 公里的路线。但是这条路线的持续时间为 17 分钟,而建议的(更长)路线的持续时间为 16 分钟,这就是为什么更长的路线是建议的路线。

因此从返回的 route 取出最短的路线。

例子:

<?php
//request the directions
$routes=json_decode(file_get_contents('http://maps.googleapis.com/maps/api/directions/json?origin=bomerstraat%2018,%20peer&destination=kievitwijk%2028,%20helchteren&alternatives=true&sensor=false'))->routes;

//sort the routes based on the distance
usort($routes,create_function('$a,$b','return intval($a->legs[0]->distance->value) - intval($b->legs[0]->distance->value);'));

//print the shortest distance
echo $routes[0]->legs[0]->distance->text;//returns 9.0 km
?>

注意:您可能会在 google-maps 和服务中得到不同的结果,因为 google-maps 会考虑当前的交通状况,但服务不会(除非您有营业执照)

关于php - 谷歌距离矩阵 JSON 最短路径 (PHP),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18574496/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com