Place Details (最新)

您可以要求特定建築物或搜尋點的詳細資料,方法是使用其地點 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 的必要參數如下:

自選參數

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 範例

以下範例要求紐約市帝國大廈的 IDNAMEADDRESS 欄位。

// 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);