#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。