使用PHP和谷歌地图Api计算出2个邮政编码之间的距离(英国)

2022-08-30 21:59:22

嗨,我想知道如何使用PHP和Google Maps Api计算出2个邮政编码之间的距离。

任何人都有任何想法或链接到例子。


答案 1

假设您要查找地理距离,首先需要使用 Google 地图服务器端地理编码服务获取两个邮政编码的纬度和经度,如以下示例所示:

$url = 'http://maps.google.com/maps/geo?q=EC3M,+UK&output=csv&sensor=false';

$data = @file_get_contents($url);

$result = explode(",", $data);

echo $result[0]; // status code
echo $result[1]; // accuracy
echo $result[2]; // latitude
echo $result[3]; // longitude

然后,您可以使用大圆距离实现来计算两个邮政编码的坐标之间的距离,如下所示:

请注意,服务器端地理编码服务只能与在 Google 地图上显示结果结合使用。Google Maps API 服务条款许可限制禁止对结果进行地理编码而不在地图上显示这些结果。


更新:

如果您正在寻找驾驶距离而不是地理距离,请注意,目前没有记录和批准的方法可以通过服务器端的HTTP请求访问Google Maps Directions API。

但是,返回 JSON 输出的未记录方法如下:

http://maps.google.com/maps/nav?q=from:London%20to:Dover

这将返回您的行车路线,以及 JSON 格式的总行驶距离:."meters":122977

参数的格式应为 。将 xxx 和 yyy 分别替换为起点和终点。您可以使用纬度和经度坐标而不是完整地址:qfrom:xxx%20to:yyy

http://maps.google.com/maps/nav?q=from:51.519894,-0.105667%20to:51.129079,1.306925

请注意,这不仅是无证的,而且还可能违反 Google 地图 API 条款和条件的限制 10.1 和 10.5。

您可能还有兴趣查看以下相关文章:


答案 2

不知道V3 API是否改变了什么,但我已经使用它很长一段时间了,它仍然有效:

从和到分别表示为纬度,经度(地址可能会起作用;我确定我试过了,但不记得了,反正我有坐标)

$base_url = 'http://maps.googleapis.com/maps/api/directions/xml?sensor=false';
$xml = simplexml_load_file("$base_url&origin=$from&destination=$to");
$distance = (string)$xml->route->leg->distance->text;
$duration = (string)$xml->route->leg->duration->text

推荐