之前有一篇是寫「計算兩地址的距離(使用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
若有業務合作需求,可寫信至: [email protected]
創業、網站經營相關內容未來將發布在 小易創業筆記