繁体   English   中英

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

[英]Using PHP and google Maps Api to work out distance between 2 post codes (UK)

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

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

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

$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

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

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

请注意,这不仅是未记录的,而且还可能违反Google Maps API条款和条件的限制10.1和10.5。

您可能会对查看以下相关文章感兴趣:

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

From和to各自表示为纬度,经度(一个地址可能会起作用;我确定我尝试了但不记得了,我还是有坐标)

$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

基于Daniel的答案,您可以使用Google的地理编码API轻松获取汽车,公共交通,步行和骑行距离:

$postcode1='W1J0DB';
$postcode2='W23UW';
$result = array();

$url = "http://maps.googleapis.com/maps/api/distancematrix/json?origins=$postcode1&destinations=$postcode2&mode=bicycling&language=en-EN&sensor=false";

$data = @file_get_contents($url);

$result = json_decode($data, true);
print_r($result);

请务必使用您的首选参数替换&mode = bicycling

  • &模式=驱动
  • &模式=骑车
  • &模式=中转
  • &模式=行走

看看这里的邮件列表:

http://groups.google.com/group/Google-Maps-API/browse_thread/thread/71e6aa2c3de66127

一旦您决定是否需要直线或行驶距离,您就可以轻松地计算出来。 您不必使用PHP,但有一些示例。

看看这个:

http://groups.google.com/group/google-maps-api/browse_thread/thread/d43de63d05adc62d/1a04053f39a3edf3?lnk=gst&q=calculate+distance#1a04053f39a3edf3

Google Maps API使用的是JavaScript,而不是PHP。 要获得所需内容,请将2个邮政编码转换为LatLang坐标,并使用函数distanceFrom查找它们之间的距离。

看看这篇文章的一些示例代码。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM