之前有一篇是寫「計算兩地址的距離(使用PHP、Google Map)」,在文章內有用到google map 的api來獲取經緯度,但那時候獲取經緯度的功能,不需要API KEY,如今已經強制要求要API KEY了。
獲取地址經緯度(新版)
要實現此功能,需要完成兩大步驟。
取得API KEY
改寫程式
Google Map Api Key
進入google maps platform 後,點選「開始使用」。
再來會彈出一個視窗,問你需要用到哪些功能,[地圖]、[路徑]、[地方資訊]。勾選每項都會開啟相關的api服務,若不確定可以都勾起來。勾好後,就點[繼續]。
接著,它會問你要放置在哪個專案(project),可以選擇現有的或是新建一個。
再來這個部分就比較麻煩一點,它要求要新增帳單資訊。(如果之前已經有添加過這部分可省略)
建立帳單帳戶
選擇[國家](理論上會自動代入),勾選[同意條款],[同意並繼續]。
這部分就比較麻煩一點,假如你是[公司],它會要求填「加值稅編號」(應該是統編)。
個人的話,可以選[已登記稅籍的個人:需填加值稅編號]或[未登記稅籍的個人]。一般來說,選[未登記稅籍的個人]。
接著,就是要填寫[信用卡資訊],這部分沒信用卡恐怕申請不過去。而且用信用卡號生成器是沒用的,它似乎會實際去刷卡再退刷,確認卡片是有效的。
啟用API服務
成功建立帳單帳戶後,就會進入到啟用API服務的頁面。首先它會跟你確認,總共會開啟的API服務數量。沒問題就直接按[下一步]。
馬上就會獲得一組API KEY了。
提醒:API KEY 不要任意公開,避免被人盜用,導致帳單費用暴增哦~
Google Map API地址轉經緯度程式碼(PHP)
<?php /* * * 類名:MapCalc * 功能:google map 地址轉經緯度 * 建立者:Aidec * 說明: */ class MapCalc { function getPageData($url){ $ch = curl_init(); curl_setopt($ch, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_0); curl_setopt($ch, CURLOPT_HTTPHEADER, array('Expect: ')); curl_setopt($ch, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); //curl_setopt($ch, CURLOPT_HEADER, true); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_NOBODY, false); curl_setopt($ch, CURLOPT_FILETIME, true); curl_setopt($ch, CURLOPT_REFERER, $url); curl_setopt($ch, CURLOPT_BINARYTRANSFER, true); curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 4); curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 10); curl_setopt($ch, CURLOPT_TIMEOUT, 10); curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)"); //取得原始碼 $result['data'] = curl_exec($ch); //$info_tmp = curl_getinfo($ch); //取得info資訊 //$result['info'] = $info_tmp; unset($info_tmp); curl_close($ch); return $result; } /** * 初始化 * @param $apikey 金鑰 */ function __construct($apikey=''){ $this->apikey = $apikey; } /* * 獲取地址經緯度 - 從google map */ public function getAddressLatLng($addr='',$apikey=''){ $apikey = ($apikey=='') ? $this->apikey : $apikey; $url = 'http://maps.google.com/maps/api/geocode/json?address='.$addr.'&sensor=false&APIKEY='.$apikey; $geocode=$this->getPageData($url); if(isset($geocode['data'])){ $geocode = $geocode['data']; } $output= json_decode($geocode); $latitude = $output->results[0]->geometry->location->lat; $longitude = $output->results[0]->geometry->location->lng; return array('lat'=>$latitude,'lng'=>$longitude); } } //使用方式 $gmap = new MapCalc('AIzaSy.................'); //填入金鑰 $data = $gmap->getAddressLatLng('高雄市'); //填入地址 ?>
文章轉載或引用,請先告知並保留原文出處與連結!!(單純分享或非營利的只需保留原文出處,不用告知)
原文連結:
https://blog.aidec.tw/post/google-mpa-api-geocode
若有業務合作需求,可寫信至: opweb666@gmail.com
創業、網站經營相關內容未來將發布在 小易創業筆記