#151 串接 Google Maps 的 Places API 抓取店家資訊和照片

Google Maps 提供許多方便開發者串接的資料,比方地圖資料,導航資料,世界各地的 place 資料等。

接下來彼得潘將以 Place API 為例,利用它找尋附近好吃的餐廳,準備情人節時跟女朋友一起吃情人節大餐。

取得 Google Maps API key

串接 API 之前,我們必須先取得 API key,因為待會 Place API 的網址必須包含 API key。

Place Search 的 Nearby Search requests

抓取附近的店家資訊。

它是個 GET API,網址格式如下:

https://maps.googleapis.com/maps/api/place/nearbysearch/output?parameters

必備的參數是 key,location & radius。

範例1: 抓取附近跟牛排有關的商家

https://maps.googleapis.com/maps/api/place/nearbysearch/json?location=25.0338,121.5646&radius=1000&keyword=牛排&language=zh-TW&key=123456
  • /json : output 填寫 json,表示回傳的資料為 JSON 格式。
  • location: 經緯度。抓取緯度 25.0338,經度 121.5646 附近的 place。
  • radius: 範圍,單位為公尺。抓取附近 1000 公尺的 place。
  • keyword: 搜尋的關鍵字。抓取跟牛排有關的 place。
  • key: API key。(ps: 此處的 123456 是假的 key,請換上自己申請的 key)
  • language: 資料的語言。預設取得的資料是英文,店家名字將變成看不懂的英文,因此我們用 zh-TW 指定中文。其它可設定的語言可參考以下連結。

JSON 結果

範例2: 抓取附近的餐廳

https://maps.googleapis.com/maps/api/place/nearbysearch/json?location=25.0338,121.5646&radius=1000&type=restaurant&language=zh-TW&key=123456

參數 type 指定抓取的 place 種類,restaurant 代表餐廳,其它可設定的種類可參考以下連結。

JSON 結果

Place Details 的 Place Details Requests

Place Search 只會回傳店家的基本資料,若想知道詳細的資料,比方它的多張照片,店家的營業時間等,則須使用 Place Details Requests。

它是個 GET API,網址格式如下:

https://maps.googleapis.com/maps/api/place/details/output?parameters

必備的參數是 key & place_id。

範例

https://maps.googleapis.com/maps/api/place/details/json?place_id=ChIJPxnPnrCrQjQRmEwUNrIViu0&language=zh-TW&key=123456

place_id 代表 place 的 id,可從 Place Search 回傳的 JSON 取得。

JSON 結果

詳細的營業時間。

豐富的照片。

深度的評論。

Place Photos 的 Place Photo Requests

為了知道情人節要不要去這家餐廳,彼得潘想看一下照片,看看食物好不好吃。利用 Place Photo Requests 我們可以抓取 place 的相關照片。

它是個 GET API,網址格式如下:

https://maps.googleapis.com/maps/api/place/photo?parameters

必備的參數是 key,photoreference 和 maxwidth(或 maxheight)。

範例

https://maps.googleapis.com/maps/api/place/photo?maxwidth=400&photoreference=Aap_uEAoMPyqELtjgpcncXlVfj_h4SNj8p5IjYv3-ixDqZkBTyguhZm7aT7ZP-e6J4WTxRT0J3ziKW59QBEyuEFoOWJhqYBVxZPDpZEdh0tO5spN5WfH68EWjvvWl0-LShyVtjia-aUQZYP50RtbUiFI-XrSF54U2HDyKqQP2_-neSY8BJw2&key=123456

參數 photoreference 的 id 可從兩種地方取得。

1. Place Search 回傳的 JSON 資料,它只會有一張照片的 photoreference。

2. Place Details 回傳的 JSON 資料,包含多張照片的 photoreference。

作品集

--

--

彼得潘的 iOS App Neverland
彼得潘的 100 道 Swift iOS App 謎題

彼得潘的iOS App程式設計入門,文組生的iOS App程式設計入門講師,彼得潘的 Swift 程式設計入門,App程式設計入門作者,http://apppeterpan.strikingly.com