Google Maps Platform API的申請與使用

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後的 outputparameters,說明如下

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的停用。

 

 

其他的,就再繼續慢慢實驗了~