使用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,但有一些例子。
看这个也是:
Google Maps API使用的是JavaScript,而不是PHP。 要达到您想要的效果,请将2个邮编转到LatLang坐标,并使用distanceFrom
函数查找它们之间的距离。
看看这篇文章的一些示例代码。