更新:下列方法不在適用..

傳送門

因公司需要解析地理服務…

上網找尋後發現Google有好物…

因此在此紀錄一下…

如果無申請API,一天上限2500次…

以下為google的連結範例…

http://maps.googleapis.com/maps/api/geocode/json?address=%E5%AD%94%E6%98%8E&sensor=false

API申請地方

 

接者示範在 PHP SERVER 時候該如何操作並取回資料…

支援顯示的語言 請參照 如未設定預設為英文

 function get_Adr_spilt($googleQuery)
 {

 //再傳送地址去分析時,要先將文字轉換成URL格式

 $url = 'https://maps.googleapis.com/maps/api/geocode/json?address='.urlencode($googleQuery).'&sensor=false&language=zh-TW&key=Your_API_KEY';

 $ch = curl_init();

 curl_setopt($ch, CURLOPT_URL, $url);

 curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

 curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); //使用https方式POST

 curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); //但關閉驗證SSL憑證

 //將資料JSON PARSE出來

 $result = json_decode(curl_exec($ch),TRUE); 

 //關閉連線

 curl_close($ch);
 
 //宣告需要儲存的地方 直接預設值

 $objTemp;
 $objTemp["ZIP"] = ""; //郵遞號碼
 $objTemp["Cnty"] = "--"; //國家
 $objTemp["Counties"] = "--"; //縣市
 $objTemp["City"] = "--"; //區域

 
 if($result["status"] == "OK") //如果回傳OK執行
 { 

     //將資料取出 (Google 資料可能回傳多筆,請依據自己所需做調整)
     $Data = $result["results"][0]["address_components"]; 
 
   for($i = 0 ; $i < count($Data) ; $i++)
   { 
     //參照手冊依續取出所需資料 
     switch(strval($Data[$i]["types"][0]) )
     {
        case "postal_code": //郵遞區號
            $objTemp["ZIP"] = $Data[$i]["long_name"];
        break;
        case "country": //國家
            $objTemp["Cnty"] = $Data[$i]["long_name"];
        break;
        case "administrative_area_level_1" ://縣市
            $objTemp["Counties"] = $Data[$i]["long_name"];
        break;
        case "locality" : //區域
            $objTemp["City"] = $Data[$i]["long_name"];
        break; 
     }
   }
 } 
 //回傳
 return $objTemp; 

 
 }

之後只要將地址傳入此函數…

即可解析出所需要的資訊…

Leave a Comment