您可以要求特定建築物或搜尋點的詳細資料,方法是使用其地點 ID 並建立 Place Details (新版) 要求。Place Details (新版) 會傳回有關地點的完整資訊,例如完整地址、電話號碼、使用者評分和評論。
取得地點 ID 的方法有很多種,例如:
Place Details (新) 要求
您可以呼叫 PlacesClient.fetchPlace()
並傳遞包含地點 ID 和欄位清單的 FetchPlaceRequest
物件,以及任何選用參數,以要求 Place Details:
// Define a place ID.
final String placeId = "INSERT_PLACE_ID_HERE";
// Specify the list of fields to return.
final List<Place.Field> placeFields = Arrays.asList("INSERT_PLACE_FIELDS_HERE");
// Construct a request object, passing the place ID and field list.
final FetchPlaceRequest request = FetchPlaceRequest.newInstance(placeId, placeFields);
// Pass the request object and make the request
Task<FetchPlaceResponse> placeTask = placesClient.fetchPlace(request);
Place Details (新) 回應
Place Details (新版) 會以 Place
物件的形式傳回資料,其中只包含您使用欄位清單要求的欄位。地點資料結果不可空白,因此系統只會傳回含有資料的地點結果 (舉例來說,如果要求的地點沒有相片,結果中不會顯示相片欄位)。
如要存取資料欄位,請呼叫對應的方法。舉例來說,如要存取地點名稱,請呼叫 getName()
。
必要參數
FetchPlaceRequest
的必要參數如下:
-
地點 ID
可識別特定地點的文字 ID,由 Text Search (新版)、Nearby Search (新版) 或 Autocomplete (新版) 傳回。如要進一步瞭解地點 ID,請參閱地點 ID 總覽。
-
欄位清單
要求地點時,必須指定要傳回的地點資料。如要執行此操作,請傳遞
Place.Field
值清單,指定要傳回的資料。回應中沒有傳回欄位的預設清單。欄位清單是一個不錯的設計做法,可確保您沒有要求不必要的資料,以避免不必要的處理時間和帳單費用。這份清單會影響每個要求的費用,因此此為重要考量。詳情請參閱「用量與計費」一文。
指定下列一或多個欄位:
下列欄位會觸發 Place Details (僅限 ID) SKU:
Place.Field.ID
、Place.Field.NAME
、Place.Field.PHOTO_METADATAS
下列欄位會觸發 Place Details (Location Only) SKU:
Place.Field.ADDRESS_COMPONENTS
、Place.Field.ADDRESS
、Place.Field.LAT_LNG
、Place.Field.PLUS_CODE
、Place.Field.TYPES
、Place.Field.VIEWPORT
下列欄位會觸發 Place Details (基本) SKU:
Place.Field.BUSINESS_STATUS
、Place.Field.ICON_BACKGROUND_COLOR
、Place.Field.ICON_URL
、Place.Field.UTC_OFFSET
、Place.Field.WHEELCHAIR_ACCESSIBLE_ENTRANCE
下列欄位會觸發 Place Details (進階) SKU:
Place.Field.CURRENT_OPENING_HOURS
、Place.Field.SECONDARY_OPENING_HOURS
、Place.Field.PHONE_NUMBER
、Place.Field.PRICE_LEVEL
、Place.Field.RATING
、Place.Field.OPENING_HOURS
、Place.Field.USER_RATINGS_TOTAL
、Place.Field.WEBSITE_URI
下列欄位會觸發 Place Details (Preferred) SKU:
Place.Field.CURBSIDE_PICKUP
、Place.Field.DELIVERY
、Place.Field.DINE_IN
、Place.Field.EDITORIAL_SUMMARY
、Place.Field.RESERVABLE
、Place.Field.REVIEWS
、Place.Field.SERVES_BEER
、Place.Field.SERVES_BREAKFAST
、Place.Field.SERVES_BRUNCH
、Place.Field.SERVES_DINNER
、Place.Field.SERVES_LUNCH
、Place.Field.SERVES_VEGETARIAN_FOOD
、Place.Field.SERVES_WINE
、Place.Field.TAKEOUT
自選參數
FetchPlaceRequest
的選用參數如下:
區域代碼
用於設定回應格式的區碼,以 雙字元 CLDR 代碼值指定。沒有預設值。
如果回應中
Place.Field.ADDRESS
欄位的國家/地區名稱與regionCode
相符,Place.Field.ADDRESS
就會省略國家/地區代碼。大部分 CLDR 代碼與 ISO 3166-1 代碼相同,只有一些值得注意的例外狀況。舉例來說,英國的 ccTLD 是「uk」(.co.uk),而其 ISO 3166-1 代碼卻是「gb」(正式的國名是「大不列顛暨北愛爾蘭聯合王國」)。這個參數會根據適用法律影響結果。
如要設定區碼參數,請在建立
FetchPlaceRequest
物件時呼叫setRegionCode()
方法。-
工作階段符記
工作階段符記是使用者產生的字串,可將 Autocomplete (新) 呼叫視為「工作階段」來追蹤。Autocomplete (新版) 會使用工作階段符記,將使用者自動完成搜尋的查詢查詢及地點選取階段歸入不同的工作階段,以用於計費。工作階段符記會傳遞至 Place Details (新版) 呼叫後方,此呼叫會追蹤 Autocomplete (新版) 呼叫。詳情請參閱工作階段符記。
如要設定工作階段符記參數,請在建立
FetchPlaceRequest
物件時呼叫setSessionToken()
方法。
Place Details 範例
以下範例要求紐約市帝國大廈的 ID
、NAME
和 ADDRESS
欄位。
// Define a place ID.
final String placeId = "ChIJaXQRs6lZwokRY6EFpJnhNNE";
// Specify the list of fields to return.
final List<Place.Field> placeFields = Arrays.asList(Place.Field.ID, Place.Field.NAME, Place.Field.ADDRESS);
// Construct a request object, passing the place ID and field list.
final FetchPlaceRequest request = FetchPlaceRequest.newInstance(placeId, placeFields);
// Pass the request object and make the request
Task<FetchPlaceResponse> placeTask = placesClient.fetchPlace(request);