Google Maps Platform API的申請與使用
2020.12.02
人老了,什麼都記不久,需要紀錄一下這次使用Google Maps Platform的操作步驟。
這次,我希望擷取的是Google地圖上商家的資訊。
糟糕,我覺得我有種走到偏門,越陷越深的感覺…
關於API使用的費用與支出
瞭解Google的收費標準
API的使用上費用當然是很重要的關鍵,否則除非是大量的資料擷取使用或是有什麼即時的需要,否則透過爬網頁的方式,我試過用Python也是能達到同樣的目的,但總之就是研究一下囉。
如果使用Google Maps Platform的API,收費採即付即用的計費方式,用多少就付多少,且其實每個月會提供 $200 美元的抵免額來折抵費用。所以使用上就是查詢量控制好壓在那個限制下即可,而查詢量又可以透過設定用量限制的方式,避免出現預算超支的意外情況。關於設定用量限制的部份,紀錄在這篇文章的最後一段。
從Google官方的「Google Maps Platform地圖介面集定價表」,可以一目了然的知道各介面集的收費標準。
監看API的使用量
透過「Google API Console」就可以直接看到目前API使用概況。同時可以切換各個取樣週期,查詢起來算是非常的直觀、明瞭。
API Key的申請
到「Google Cloud Platform / API和服務 / 憑證」申請憑證
# 點選「建立憑證」→「API金鑰」
# API金鑰很快的就產生出來了。但為了避免金鑰意外外流時被濫用,導致自己會有費用的產生,因此可以點選「限制金鑰」,來限制金鑰使用的情境。
# 如上圖所示,可以限定使用的網站、或是限定使用的IP位址、或是限定使用的設備種類…等。
# 憑證的使用還可以增加限制,限制使用的HTTP參照網址、或是IP位址、或是Android/iOS的應用程式,避免在API Key外洩的情況下被濫用。
使用Google Maps Platform API來進行查詢
在GMP Documentation上找到完整的參考資訊
透過以下的「Google Maps Platform Documentation」連結,找尋你需要的API說明文件。以我為例,我需要的是 Places API 下的 Place Details 介面。
- Maps
- Routes
- Places
- Places SDK for Android
- Places SDK for iOS
- Places Library, Map JavaScript API
- Places API
- Place Search
- Place Details
- Place Photos
- Place Autocomplete
- Query Autocomplete
- Geocoding API
- Geolocation API
- Time Zone API
- Industry Solutions
以上面為例,在我進入 Places / Places API / Place Details 後,裡面會有這個web service的相關說明與用法。
https://maps.googleapis.com/maps/api/place/details/output?parameters
關於details後的 output 與 parameters,說明如下
output會有兩個值,分別為:
- json
- xml
parameters包含了一些必要參數與非必要參數:
- key(必要)
- place_id(必要)
- language(非必要)
- region(非必要)
- sessiontoken(非必要)
- fields(非必要)
fields指的就是要取得哪些關於這個店家的資料欄位。- 如果要知道總共有哪些欄位
- 要注意的是,目前
permanently_closed
這個欄位已經被取消,同時被歸納至business_status
這個欄位中的狀態別。
開始透過API進行查詢
完成以上的API Key申請後,馬上就可以使用它來進行查詢。
https://maps.googleapis.com/maps/api/place/details/json?place_id=ChIJuaevwBioQjQRYxPlADKSd5U&key=申請的API_Key
如果是指想要看到星等與總評論數,則可以加入「fields」參數name(地點名稱)、rating(評價星等)、user_ratings_total(總評價數)
https://maps.googleapis.com/maps/api/place/details/json?place_id=ChIJuaevwBioQjQRYxPlADKSd5U&fields=name,rating,user_ratings_total&key=申請的API_Key
至於怎麼知道這些欄位名稱的?其實可以參考上面沒有加入fields參數時回應的JSON字串,再對照Google Map上的網頁就概略可以推知了。
如何設定用量限制
設定的步驟如下:
# 進入「Google API Console」,點選頭像圖案左邊的「…」,選擇「專案設定」
# 進入「IAM與管理畫面」。點選畫面中「配額」,接著選擇要限定配額的項目,點選該項目的「所有配額」。
# 這裡會跳出一個警示,需要填入聯絡資訊。當配額有變動、在審核過程中,會將資料傳送給核准者。
# 因為我是希望壓在免費的額度內。因此可以從上面提到的「Google Maps Platform地圖介面集定價表」中,推算每天的平均最高用量來作限制。
# 最後按「確認」就完成設定
監看特定API的詳細報表
步驟如下:
# 進入「Google API Console」,點選左側的「資料庫」
# 尋找所使用的API類別,並點選
# 點選該API類別頁面中的「管理」
# 在這裡左方的下拉選單可以選擇所要查詢的報表,右上方則可以進行該API的停用。
其他的,就再繼續慢慢實驗了~