Python – 使用Google Map API(6) – 取得照片

在前面第四篇的時候,提到有一個項目是 photo,裡面通常有10個項目,我們可以透過這 10 個項目取得該地點的圖片,這一篇就來看看如何透過這個項目取得圖片。

首先我們來看看,photo 裡面的 10 個項目長怎樣。

photo 裡面會有一個項目是 photo_reference,它的value大概是長這樣:CmRaAAAAMRw3rMQekkw1vt8BISl4OdOzt4Hl-9bNqpAL8XRA9iPlY5zzTptLIty32cIcNnCh0GXK8-gLZx0cjG9Xa1l8tzVNiZRLr0DXWyuAjBzztWKzrlYpaWWTHVnjcpoBotr3EhC553Dy95yqdZ2qhyeMRhmSGhSHXqw_4Wsl8V9V4fYH3hwqanK95A

繼續閱讀 “Python – 使用Google Map API(6) – 取得照片"

Python – 使用 Google Map API(3) – 取得地點詳細資料

首先複習一下本系列第一篇我們用的程式碼:


import googlemaps
google_key = “xxx”
gmaps = googlemaps.Client(key = google_key)
radar_results = gmaps.places_radar(location = (25.034195, 121.564467), radius = 100, type = “cafe”)
print(radar_results)

最後得到的 radar_results 是一個 dict,裡面有三個根元素,分別包含三個 dict。

我們要用到的是 [‘results’] 這個 key。

繼續閱讀 “Python – 使用 Google Map API(3) – 取得地點詳細資料"

Python – 使用 Google Map API (2) – 解析結果

解析雷達搜尋傳回來的 json 物件

上一篇 Python – 使用Google Map API(1) – 雷達搜尋 中最後提到,將回傳的內容print出來後得到下方的結果:


{'html_attributions': [], 'status': 'OK', 'results': [{'place_id': 'ChIJSTLZ6barQjQR7OeldE1QDsU', 'id': '09bd306d8a6fff4ed4920a843bfffb77405c4dbc', 'reference': 'CmRSAAAAbulvhVx0YEexX2M3Fi3BtxLea2U8_7Ruq1HnivcsnhQfnbur1TxVfdKCFSICFQeUyoOsGnvZLDHHHzNaP7QN__fJ4LL9WNdqW2pRPRhqsUKG8ZAKYm7puNkundjgFlPTEhARhMUPDUPBbAqDYGP6G3ddGhSaoLSfPYT4cLtjcxW72QReaX93yw', 'geometry': {'location': {'lng': 121.5651166, 'lat': 25.0338119}}}, {'place_id': 'ChIJraeA2rarQjQRcsQVAszSNog', 'id': '24711f6d1d5600fb77e7fe680d251776da27bc56', 'reference': 'CmRSAAAACT67OQqRIlpQmduE4RAFWcqxSXhEbt3gZO4SYGTwLpKbZXZu30OBpb4C8D5ncJwDtMsE13xuEIqDAqAayuIOfRQSzDq3hFmdKnaWsKSI62s7LtEQSfCs1TXQO6OxehaVEhDG_WnFgjmK8QwaV_v8ZaDvGhSghBE7BlQ14yWAwQvaGYZy3oXriA', 'geometry': {'location': {'lng': 121.56481, 'lat': 25.033718}}}, {'place_id': 'ChIJSTLZ6barQjQRDNycA51cBq4', 'id': 'cdff9d8fc20ef48d0f10f3227e890d97ed3c8ce2', 'reference': 'CmRSAAAAm1FvUZQ0fWLwYXD4COXlRNfNS3KJqs9B7AdMbjthAfy0aHB6fut6Uf8MbLd9vpQoTlLr0JznkXjMRVQoMiGarDO-GHEh4DLAGOs66F8F5L5g6DU-_TgliEgsXQuyf9-tEhADSx7IIYzZGUEicpsO4CckGhT20WcmEFlbas7zM4eFHkGDvE1cjw', 'geometry': {'location': {'lng': 121.5645391, 'lat': 25.0334612}}}, {'place_id': 'ChIJ1S3Z6barQjQRKb4ubuIujDg', 'id': '5aec3fa9fee319e70950b8b265622a0adf51e8e2', 'reference': 'CmRRAAAAibD4kyOb2YztYpfYlSYiSnDYSjSgrjLL51cI0IbKHArB_dQUveca4MWIwaXxjR9D5lRxQStyZeuU2CazfKuv-3hjCejKJZuFG6lVIVryDY4mh8rvWgMOtgN80T8cCYJSEhB1BghYVb_PoZ17kPRgjxXJGhQ96erXB8xywkj9bEWtBPN0o-jkuw', 'geometry': {'location': {'lng': 121.5638627, 'lat': 25.0334962}}}, {'place_id': 'ChIJNzLZ6barQjQReRr0AwrDlfI', 'id': '64d339a0714893fa6879639e28828563ba9409de', 'reference': 'CmRSAAAAplF_qWllM9uLZU6Z8M_wgo_GHErDBYwXtAknAYtYQ-xgfQX_bLAWBBT9IVTxpUI-9BTN0xvxcBt-cHPGe5cDtNMqEGfN78sDJYKnPwvDKLNFmYNbsQaMm-fPWImw4eKXEhB3q8dK0bCg586TexrYSiEdGhRe2fDMyupgMccnLxCuTYNwiwg-uA', 'geometry': {'location': {'lng': 121.564101, 'lat': 25.033493}}}, {'place_id': 'ChIJrXJz7K2rQjQRis4azcE0bl0', 'id': 'b3055b2436ef8135d9ba12e8bb1abfcb0a07351a', 'reference': 'CmRRAAAAPC1Bv9Gw9B_IxUAL-ThPIV-E4G37rYJqWbw8TCTYQK1rN6yVacSS9sID2WdUtptvlXGziZcvtj7l_KLIOxCSnk78uJ3xWNwDlZXKD7ZSZYMPzktNyL8yA8cHHQth1_kjEhABPqmb0iD2LmijQI0MSkwXGhQJdueeyKUT3dMnhtOiwlT-escUmw', 'geometry': {'location': {'lng': 121.5648144, 'lat': 25.0335615}}}, {'place_id': 'ChIJO8RPJ7erQjQRK7lBH_vJJQs', 'id': 'e7038e4be482c4f18c7776a505999d3769c08015', 'reference': 'CmRRAAAAno6LB7BiEpmHILy7lMjvImr1_VpVQbonyJPduFaHoi50ZlLZvwdzDwjiuy4BHnIjE_D0095Lc_nGnHQln2ApukT4jug00vlEsNW1OTIftTwVdsybe0kWx6eLDpBM4JiaEhCsx61tHrcilHVrw0gPKGoXGhQrR3niCYNznqbK4Qn6JpqG1tCkEg', 'geometry': {'location': {'lng': 121.564461, 'lat': 25.0338915}}}, {'place_id': 'ChIJUwMfwrarQjQRTg3KGHwh1gU', 'id': '5fc15ea7ded0cbf6c450e61eb60ac30bd19aaf92', 'reference': 'CmRRAAAAfrv4l4ihJEuwyq9ducmmdt0RH_Z5bJJTJQgGYHTefmZSOjl7_ti7iNeZJjzFc5gLabIdzkvdXhf4TARUf4w1OR7o1Tmlsh4E-PWC6koTwZNiivnaPxOIpDa50MDLDmGsEhBbp0wWEea6Z6fIIVg0gDp2GhSBXaaHeiWIVcquFsGXTZ02ZaTfWw', 'geometry': {'location': {'lng': 121.5641948, 'lat': 25.0333792}}}, {'place_id': 'ChIJN6uq3rarQjQR12G5vIYbHAw', 'id': 'c89fd501af56ddeb6844e3f23e65c1c9120c2d49', 'reference': 'CmRRAAAAPlbRsZY1Thk7MuD1m_Dluyzs0F_RSDcrcNtDBnrfZJyhItZF4NqR6AhbEy4IX_LQumwh8vvYMUscTBGttQT2zIYRpLWeNI0XHk1FCyIbyCiNyT5jQ7n0azWDQeC2YQiVEhDoKE6X68MsDYGPuCV8P02LGhSKiN_W_GTMfU1u64plzzL_JjVNmQ', 'geometry': {'location': {'lng': 121.5644721, 'lat': 25.0339649}}}, {'place_id': 'ChIJoSJTw7arQjQRnCc70GtKTNs', 'id': 'c6423bce8f2d8f984e621fd0086981ad4aaceea2', 'reference': 'CmRSAAAAsEeZIt1HTM3L8WPFHaCemTLwzObpXdNKXcU1tAGXoupq7ZK1Eky2oINI07uXNd–55f_HI_EcvLuV1PCDIeXieOjjJKjgWTsx4ek6J4u6Zcqb0xhP_yj63u8LScN01AvEhBgjKn_0EpKjlJAyfn8RXq9GhS6WNbtnJGTXCQOd3mUkUhbPZTaBg', 'geometry': {'location': {'lng': 121.5644412, 'lat': 25.0336347}}}, {'place_id': 'ChIJsVahxLarQjQRfkqE8XAR_9E', 'id': '80142f8b863f944054639597685da4dc180b60cb', 'reference': 'CmRSAAAA9DofkcecvBbsXclrzD9TrguQsl7Fw43GZGSNQlBdOuyHx6eZUceo8hfUEImoq7JQKCeovDd_29SrNGzCCy-Jp2dKYAol8TRfLfX1SjcPzQAL93wVEgkBPu-Nh6hb_tkpEhCpBhVcasoveJ7Qc6ytTq28GhQI2mSe_IzEIw8cedGIVFPoXAvXog', 'geometry': {'location': {'lng': 121.5644932, 'lat': 25.0335639}}}, {'place_id': 'ChIJMQANxbarQjQRtrPUHgvc_F4', 'id': '46000da8d74a1f3e7269e9b257f05b7077c95e79', 'reference': 'CmRRAAAA1W-e2Pjy2RElOjCoPtnyguJotI_iHaqzGDex8fJEp0sOgybjphCn-PkwJVsxb7I4CM-iZpI75L5sQGXwpaaL3twFBritvq1eHC7fkBcLMTmdGdvK4QevISPS5chmJFSpEhAErtzFHR93_hcWNNM6vgfNGhRDDW6WOy2Y1WpBHrwT_L7rm44f8A', 'geometry': {'location': {'lng': 121.5647292, 'lat': 25.0334375}}}]}

首先我們把這些內容丟到 json editor 來看看:

*線上 json editor 的版本很多,我就用我習慣的平台來做。

繼續閱讀 “Python – 使用 Google Map API (2) – 解析結果"

Python – 使用 Google Map API (1) – 雷達搜尋

目前雷達功能已經被Google停用啦,請改用nearby功能吧。

這邊最進不會更新nearby相關的資訊,不過其他分析的方法應該還是用得上的,希望能多少幫上一些忙,大家一起加油吧。

雷達搜尋功能 (radar)

用途:

顧名思義,就是以某個特定地點為中心,在設定的半徑範圍內,找尋特定類型的地點(店家)例如:台北 101 半徑 100 公尺內的咖啡店、台大附近 100 公尺內的餐廳。

用法:

設定好「中心點經緯度」與「地點類型」以及「半徑長度(公尺)」三個參數之後,執行place_radar函數,會回傳「半徑範圍內」被 Google 標記該「類型」的地點(店家)資料。

繼續閱讀 “Python – 使用 Google Map API (1) – 雷達搜尋"