您可以使用特定商家或兴趣点的地点 ID,并发出“地点详情(新)”请求,以请求有关该商家或兴趣点的更多详细信息。“地点详情(新)”会返回有关指定地点的更全面信息,例如完整地址、电话号码、房客评分和评价。
您可以通过多种方式获取地点 ID。您可以使用:
“地点详情(新)”请求
您可以通过调用
PlacesClient.fetchPlace()
并传递包含
FetchPlaceRequest
对象(其中包含地点 ID和字段列表)以及
任何可选参数来请求地点详情:
// 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
对象的形式返回数据,该对象仅包含您使用字段
列表请求的字段。地点数据结果不得为空,因此系统只会返回包含数据的地点结果(例如,如果请求的地点没有照片,则结果中不会显示照片字段)。
如需访问数据字段,请调用相应的
方法。
例如,如需访问地点名称,请调用 getName()。
必需参数
FetchPlaceRequest
的必需参数包括:
-
地点 ID
一个文本标识符,用于唯一标识某个地点,由 文本搜索(新)、 附近搜索(新)或 自动补全(新)返回。 如需详细了解地点 ID,请参阅 地点 ID 概览。
-
字段列表
当您请求地点时,必须指定要返回的地点数据。为此,请传递一个
Place.Field值列表,以指定要返回的数据。响应中没有返回字段的默认列表。使用字段列表是一种良好的设计做法,可确保您不会请求 不必要的数据,这有助于避免产生不必要的处理时间和 结算费用。此列表是一项重要的考虑因素, 因为它会影响每个请求的费用。如需了解详情,请参阅 用量 和结算。
指定以下一个或多个字段:
以下字段会触发“地点详情 Essentials(仅 ID)”SKU:
Place.Field.ID
Place.Field.PHOTO_METADATAS
Place.Field.RESOURCE_NAME
以下字段会触发“地点详情 Essentials”SKU:
Place.Field.ADDRESS_COMPONENTS
ADR_FORMAT_ADDRESS
Place.Field.FORMATTED_ADDRESS*
* 请改用Place.Field.ADDRESS(已弃用)。
Place.Field.LOCATION*
* 请改用Place.Field.LAT_LNG(已弃用)。
Place.Field.PLUS_CODE
Place.Field.SHORT_FORMATTED_ADDRESS
Place.Field.TYPES
Place.Field.VIEWPORT以下字段会触发“地点详情 Pro”SKU:
Place.Field.ACCESSIBILITY_OPTIONS*
* 请改用Place.Field.WHEELCHAIR_ACCESSIBLE_ENTRANCE(已弃用)。
Place.Field.BUSINESS_STATUS
Place.Field.DISPLAY_NAME*
* 请改用Place.Field.NAME(已弃用)。
Place.Field.GOOGLE_MAPS_URI
Place.Field.ICON_BACKGROUND_COLOR
Place.Field.ICON_MASK_URL*
* 请改用Place.Field.ICON_URL(已弃用)。
Place.Field.PRIMARY_TYPE
Place.Field.PRIMARY_TYPE_DISPLAY_NAME
Place.Field.SUB_DESTINATIONS
Place.Field.UTC_OFFSET以下字段会触发“地点详情 Enterprise”SKU:
Place.Field.CURRENT_OPENING_HOURS
Place.Field.CURRENT_SECONDARY_OPENING_HOURS
Place.Field.INTERNATIONAL_PHONE_NUMBER*
* 请改用Place.Field.PHONE_NUMBER(已弃用)。
Place.Field.NATIONAL_PHONE_NUMBER
Place.Field.OPENING_HOURS
Place.Field.PRICE_LEVEL
Place.Field.RATING
Place.Field.SECONDARY_OPENING_HOURS
Place.Field.USER_RATING_COUNT*
* 请改用Place.Field.USER_RATINGS_TOTAL(已 弃用)。
Place.Field.WEBSITE_URI以下字段会触发“地点详情 企业 Plus 版”SKU:
Place.Field.ALLOWS_DOGS
Place.Field.CURBSIDE_PICKUP
Place.Field.DELIVERY
Place.Field.DINE_IN
Place.Field.EDITORIAL_SUMMARY
Place.Field.EV_CHARGE_OPTIONS
Place.Field.FUEL_OPTIONS
Place.Field.GOOD_FOR_CHILDREN
Place.Field.GOOD_FOR_GROUPS
Place.Field.GOOD_FOR_WATCHING_SPORTS
Place.Field.LIVE_MUSIC
Place.Field.MENU_FOR_CHILDREN
Place.Field.OUTDOOR_SEATING
Place.Field.PARKING_OPTIONS
Place.Field.PAYMENT_OPTIONS
Place.Field.RESERVABLE
Place.Field.RESTROOM
Place.Field.REVIEWS
Place.Field.SERVES_BEER
Place.Field.SERVES_BREAKFAST
Place.Field.SERVES_BRUNCH
Place.Field.SERVES_COCKTAILS
Place.Field.SERVES_COFFEE
Place.Field.SERVES_DESSERT
Place.Field.SERVES_DINNER
Place.Field.SERVES_LUNCH
Place.Field.SERVES_VEGETARIAN_FOOD
Place.Field.SERVES_WINE
Place.Field.TAKEOUT
可选参数
FetchPlaceRequest
的可选参数包括:
区域代码
用于设置响应格式的区域代码,以 双字符 CLDR 代码值指定。没有默认值。
如果响应中
Place.Field.FORMATTED_ADDRESS字段的国家/地区名称与regionCode匹配,则系统会从Place.Field.FORMATTED_ADDRESS中省略国家/地区代码。大多数 CLDR 代码都与 ISO 3166-1 代码相同, 但也有一些需要注意的例外情况。例如,英国的 ccTLD 为 “uk”(.co.uk),而其 ISO 3166-1 代码为“gb”(代表“大不列颠及北爱尔兰联合王国”)。 该参数可能会根据适用法律影响结果。
如需设置区域代码参数,请在构建
FetchPlaceRequest对象时调用setRegionCode()方法。-
会话令牌
会话令牌是用户生成的字符串,用于将 自动补全(新)调用跟踪为“会话”。自动补全(新)使用会话令牌将用户自动补全搜索的查询和地点选择阶段归入不同的会话,以便进行结算。会话令牌会传递到自动补全(新)调用之后的“地点详情(新)” 调用中。如需了解详情,请参阅 会话令牌。
如需设置会话令牌参数,请在构建
FetchPlaceRequest对象时调用setSessionToken()方法。
“地点详情”示例
以下示例请求纽约市帝国大厦的 ID、DISPLAY_NAME 和 FORMATTED_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.DISPLAY_NAME, Place.Field.FORMATTED_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);