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

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

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

假设您正在寻找地理距离 ,首先您需要使用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 

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

  • Snipplr – 计算PHP中两个坐标之间的距离

请注意,服务器端地理编码服务只能与在Google地图上显示结果一起使用; Google地图API服务条款许可限制禁止将地理编码结果显示在地图上。


更新:

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

尽pipe如此,返回JSON输出的未公开方法如下:

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

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

q参数的格式应该是from:xxx%20to:yyy 。 将xxx和yyy分别replace为start和destination。 您可以使用纬度和经度坐标来代替完整地址:

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

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

您在查阅以下相关文章时也可能会感兴趣:

  • 堆栈溢出:使用PHP计算驾驶方向?
  • 通过URL获取使用GDirections的距离
  • 通过服务器端HTTP调用从Google地图中检索驾车路线,并使用WAP的静态地图显示结果
  • Google Maps和Directions,REST界面?

不知道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 

根据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); 

一定要用你喜欢的参数replace&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函数查找它们之间的距离。

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