2010-02-19 82 views

回答

29

假設你正在尋找geographic distance,首先你需要用Google Maps server-side geocoding services讓你的兩個郵政編碼的經度和緯度,如下面的例子:

$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 

然後你就可以計算出座標之間的距離

:你的兩個郵政編碼使用 great-circle distance實現諸如以下的

請注意,服務器端地理編碼服務只能與在Google地圖上顯示結果一起使用;地理編碼結果不會在地圖上顯示,這是Google Maps API Terms of Service License Restrictions禁止的。


UPDATE:

如果你正在尋找的行駛距離,而不是地理距離,注意,是目前通過訪問谷歌地圖路線API沒有記載和認可的方法服務器端的HTTP請求。

儘管如此,它返回一個JSON輸出的無證方法如下:

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

這將返回行車路線,以JSON格式的總行駛距離沿:"meters":122977

參數q的格式應爲from:xxx%20to:yyy。將xxx和yyy分別替換爲start和destination。您可以使用緯度和經度座標,而不是詳細地址:

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

注意,這不僅是無證的,但它也可能會違反限制10.1和Google Maps API Terms and Conditions的10.5。

您還可以檢查出下面的相關文章有意思:

+1

這是如何做到這一點的一個很好的解釋。但請注意,由於您對英國有特別要求,因此Google地理位置對英國郵政編碼來說並不準確。儘管如此,這可能是可以的,取決於你的需要。 – MarkJ 2010-02-20 11:37:01

+0

@Mark:感謝您分享有關英國郵政編碼準確性的信息。 – 2010-02-20 12:24:26

+1

這存在︰https://developers.google.com/maps/documentation/distancematrix/ – malix 2014-05-01 12:55:29

0

的谷歌地圖API在JavaScript中,而不是PHP。要達到您想要的效果,請將2個郵政編碼轉換爲LatLang座標,並使用功能distanceFrom查找它們之間的距離。

查看this article的一些示例代碼。

+0

有反正我可以返回JSON數據?我打算做AJAX呼叫來計算兩個地方之間的駕駛距離。 – dotty 2010-02-19 12:27:16

+0

你應該可以。來自Google API的數據已經採用JSON格式。只需將它發回PHP,或使用Javascript解析客戶端。 – 2010-02-20 09:45:41

3

不知道如果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 
2

大廈丹尼爾的回答,您可以使用谷歌的Geocoding 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); 

務必更換&模式=您的首選參數騎自行車

  • &模式=行駛
  • &模式=騎自行車
  • &模式=運輸
  • &模式=行走
相關問題