Yêu cầu Tìm kiếm lân cận (Mới) lấy vùng để tìm kiếm được chỉ định dưới dạng một vòng tròn, được xác định bằng toạ độ vĩ độ và kinh độ của tâm điểm của vòng tròn và bán kính tính bằng mét. Yêu cầu này sẽ trả về danh sách các địa điểm trùng khớp, mỗi địa điểm được biểu thị bằng một đối tượng Place
trong phạm vi tìm kiếm đã chỉ định.
Theo mặc định, phản hồi chứa tất cả các loại địa điểm trong khu vực tìm kiếm. Bạn có thể lọc phản hồi nếu muốn bằng cách chỉ định danh sách các loại địa điểm để đưa vào hoặc loại trừ khỏi phản hồi một cách rõ ràng. Ví dụ: bạn có thể chỉ định chỉ bao gồm những địa điểm thuộc loại "nhà hàng", "tiệm bánh" và "quán cà phê" trong phản hồi hoặc loại trừ tất cả địa điểm thuộc loại "trường học".
Yêu cầu Tìm kiếm lân cận (Mới)
Tạo yêu cầu Tìm kiếm lân cận (Mới) bằng cách gọi PlacesClient.searchNearby
, truyền đối tượng SearchNearbyRequest
xác định các tham số yêu cầu.
Đối tượng SearchNearbyRequest
chỉ định tất cả các tham số bắt buộc và không bắt buộc cho yêu cầu. Các tham số bắt buộc bao gồm:
- Danh sách các trường cần trả về trong đối tượng
Place
, còn gọi là mặt nạ trường. Nếu bạn không chỉ định ít nhất một trường trong danh sách trường hoặc nếu bạn bỏ qua danh sách trường, thì lệnh gọi sẽ trả về lỗi. - Quy định hạn chế về vị trí cho khu vực tìm kiếm, được xác định là một cặp vĩ độ/kinh độ và giá trị bán kính, tính bằng mét.
Yêu cầu tìm kiếm địa điểm lân cận mẫu này chỉ định rằng các đối tượng Place
phản hồi chứa các trường địa điểm Place.Field.ID
và Place.Field.DISPLAY_NAME
cho mỗi đối tượng Place
trong kết quả tìm kiếm. Hàm này cũng lọc phản hồi để chỉ trả về các địa điểm thuộc loại "nhà hàng" và "quán cà phê", nhưng loại trừ các địa điểm thuộc loại "pizza_restaurant" và "american_restaurant".
// Define a list of fields to include in the response for each returned place. final List<Place.Field> placeFields = Arrays.asList(Place.Field.ID, Place.Field.DISPLAY_NAME); // Define the search area as a 1000 meter diameter circle in New York, NY. LatLng center = new LatLng(40.7580, -73.9855); CircularBounds circle = CircularBounds.newInstance(center, /* radius = */ 1000); // Define a list of types to include. final List<String> includedTypes = Arrays.asList("restaurant", "cafe"); // Define a list of types to exclude. final List<String> excludedTypes = Arrays.asList("pizza_restaurant", "american_restaurant"); // Use the builder to create a SearchNearbyRequest object. final SearchNearbyRequest searchNearbyRequest = SearchNearbyRequest.builder(/* location restriction = */ circle, placeFields) .setIncludedTypes(includedTypes) .setExcludedTypes(excludedTypes) .setMaxResultCount(10) .build()); // Call placesClient.searchNearby() to perform the search. // Define a response handler to process the returned List of Place objects. placesClient.searchNearby(searchNearbyRequest) .addOnSuccessListener(response -> { List<Place> places = response.getPlaces(); });
Câu trả lời cho Nearby Search (Mới)
Lớp SearchNearbyResponse
đại diện cho phản hồi từ một yêu cầu tìm kiếm. Đối tượng SearchNearbyResponse
chứa:
- Danh sách các đối tượng
Place
đại diện cho tất cả các địa điểm trùng khớp, với một đối tượngPlace
cho mỗi địa điểm trùng khớp. - Mỗi đối tượng
Place
chỉ chứa các trường do danh sách trường xác định được truyền trong yêu cầu.
Ví dụ: trong yêu cầu, bạn đã xác định danh sách trường là:
// Define a list of fields to include in the response for each returned place. final List<Place.Field> placeFields = Arrays.asList(Place.Field.ID, Place.Field.NAME);
Danh sách trường này có nghĩa là mỗi đối tượng Place
trong phản hồi chỉ chứa mã địa điểm và tên của từng địa điểm trùng khớp. Sau đó, bạn có thể sử dụng các phương thức Place.getId()
và Place.getName()
để truy cập vào các trường này trong mỗi đối tượng Place
.
Để xem thêm ví dụ về cách truy cập dữ liệu trong đối tượng Place
, hãy xem phần Truy cập vào các trường dữ liệu đối tượng Địa điểm.
Thông số bắt buộc
Sử dụng đối tượng SearchNearbyRequest
để chỉ định các tham số bắt buộc cho lượt tìm kiếm.
Danh sách trường
Khi yêu cầu thông tin chi tiết về địa điểm, bạn phải chỉ định dữ liệu cần trả về trong đối tượng
Place
cho địa điểm đó dưới dạng mặt nạ trường. Để xác định mặt nạ trường, hãy truyền một mảng giá trị từPlace.Field
đến đối tượngSearchNearbyRequest
. Việc che trường là một phương pháp thiết kế hay để đảm bảo rằng bạn không yêu cầu dữ liệu không cần thiết, giúp tránh thời gian xử lý và phí thanh toán không cần thiết.Chỉ định một hoặc nhiều trường sau:
Các trường sau đây sẽ kích hoạt SKU Tìm kiếm xung quanh (Cơ bản):
Place.Field.ADDRESS_COMPONENTS
,Place.Field.BUSINESS_STATUS
,Place.Field.ADDRESS
,Place.Field.ICON_BACKGROUND_COLOR
,Place.Field.ICON_URL
,Place.Field.LAT_LNG
,Place.Field.PHOTO_METADATAS
,Place.Field.PLUS_CODE
,Place.Field.PRIMARY_TYPE
,Place.Field.PRIMARY_TYPE_DISPLAY_NAME
,Place.Field.ID
,Place.Field.NAME
,Place.Field.TYPES
,Place.Field.UTC_OFFSET
,Place.Field.VIEWPORT
,Place.Field.WHEELCHAIR_ACCESSIBLE_ENTRANCE
Các trường sau đây sẽ kích hoạt SKU Tìm kiếm xung quanh (Nâng cao):
Place.Field.CURRENT_OPENING_HOURS
,Place.Field.CURRENT_SECONDARY_OPENING_HOURS
Place.Field.INTERNATIONAL_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.WEBSITE_URI
Các trường sau đây sẽ kích hoạt SKU Tìm kiếm ở gần (Ưu tiên):
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
Để đặt tham số danh sách trường, hãy gọi phương thức
setPlaceFields()
khi tạo đối tượngSearchNearbyRequest
.Ví dụ sau đây xác định danh sách gồm hai giá trị trường để chỉ định rằng đối tượng
Place
do yêu cầu trả về chứa các trườngPlace.Field.ID
vàPlace.Field.DISPLAY_NAME
:
// Define a list of fields to include in the response for each returned place. final List<Place.Field> placeFields = Arrays.asList(Place.Field.ID, Place.Field.DISPLAY_NAME);
Hạn chế về vị trí
Đối tượng
LocationRestriction
xác định vùng cần tìm kiếm được chỉ định dưới dạng một vòng tròn, được xác định bằng tâm điểm và bán kính tính bằng mét. Bán kính phải lớn hơn 0.0 và nhỏ hơn hoặc bằng 50000.0, lưu ý rằng việc chỉ định bán kính quá nhỏ sẽ trả vềZERO_RESULTS
dưới dạng phản hồi.Để đặt tham số hạn chế vị trí, hãy gọi phương thức
setLocationRestriction()
khi tạo đối tượngSearchNearbyRequest
.
Thông số tùy chọn
Sử dụng đối tượng SearchNearbyRequest
để chỉ định các tham số không bắt buộc cho lượt tìm kiếm.
-
Loại và loại chính
Cho phép bạn chỉ định danh sách các loại trong các loại Bảng A dùng để lọc kết quả tìm kiếm. Bạn có thể chỉ định tối đa 50 loại trong mỗi danh mục quy định hạn chế về loại.
Một địa điểm chỉ có thể có một loại chính trong các loại Bảng A liên kết với địa điểm đó. Ví dụ: loại chính có thể là
"mexican_restaurant"
hoặc"steak_house"
. Sử dụngincludedPrimaryTypes
vàexcludedPrimaryTypes
để lọc kết quả theo loại chính của địa điểm.Một địa điểm cũng có thể có nhiều giá trị loại từ các loại Bảng A liên kết với địa điểm đó. Ví dụ: một nhà hàng có thể có các loại sau:
"seafood_restaurant"
,"restaurant"
,"food"
,"point_of_interest"
,"establishment"
. Sử dụngincludedTypes
vàexcludedTypes
để lọc kết quả trong danh sách các loại liên kết với một địa điểm.Khi bạn chỉ định một loại chính chung, chẳng hạn như
"restaurant"
hoặc"hotel"
, phản hồi có thể chứa các địa điểm có loại chính cụ thể hơn so với loại chính đã chỉ định. Ví dụ: bạn chỉ định bao gồm một loại chính là"restaurant"
. Sau đó, phản hồi có thể chứa các địa điểm có loại chính là"restaurant"
, nhưng phản hồi cũng có thể chứa các địa điểm có loại chính cụ thể hơn, chẳng hạn như"chinese_restaurant"
hoặc"seafood_restaurant"
.Nếu một nội dung tìm kiếm được chỉ định với nhiều quy định hạn chế về loại, thì hệ thống sẽ chỉ trả về những địa điểm đáp ứng tất cả các quy định hạn chế đó. Ví dụ: nếu bạn chỉ định
includedTypes = Arrays.asList("restaurant")
vàexcludedPrimaryTypes = Arrays.asList("steak_house")
, thì các địa điểm được trả về sẽ cung cấp các dịch vụ liên quan đến"restaurant"
nhưng không hoạt động chủ yếu dưới dạng"steak_house"
.Để biết ví dụ về cách sử dụng
includedTypes
vàexcludedTypes
, hãy xem phần Yêu cầu Tìm kiếm lân cận (Mới).Các loại được đưa vào
Danh sách các loại địa điểm trong Bảng A để tìm kiếm. Nếu bạn bỏ qua tham số này, hệ thống sẽ trả về tất cả các địa điểm.
Để đặt tham số loại được đưa vào, hãy gọi phương thức
setIncludedTypes()
khi tạo đối tượngSearchNearbyRequest
.Loại bị loại trừ
Danh sách các loại địa điểm trong Bảng A để loại trừ khỏi một lượt tìm kiếm.
Nếu bạn chỉ định cả
includedTypes
(chẳng hạn như"school"
) vàexcludedTypes
(chẳng hạn như"primary_school"
) trong yêu cầu, thì phản hồi sẽ bao gồm những địa điểm được phân loại là"school"
nhưng không phải là"primary_school"
. Phản hồi bao gồm những địa điểm khớp với ít nhất một trong sốincludedTypes
và không có địa điểm nào khớp vớiexcludedTypes
.Nếu có bất kỳ loại nào xung đột, chẳng hạn như một loại xuất hiện trong cả
includedTypes
vàexcludedTypes
, thì lỗiINVALID_REQUEST
sẽ được trả về.Để đặt tham số loại bị loại trừ, hãy gọi phương thức
setExcludedTypes()
khi tạo đối tượngSearchNearbyRequest
.Bao gồm các loại chính
Danh sách các loại địa điểm chính trong Bảng A để đưa vào nội dung tìm kiếm.
Để đặt tham số loại chính được đưa vào, hãy gọi phương thức
setIncludedPrimaryTypes()
khi tạo đối tượngSearchNearbyRequest
.Loại chính bị loại trừ
Danh sách các loại địa điểm chính trong Bảng A để loại trừ khỏi kết quả tìm kiếm.
Nếu có bất kỳ loại chính nào xung đột, chẳng hạn như một loại xuất hiện trong cả
includedPrimaryTypes
vàexcludedPrimaryTypes
, thì lỗiINVALID_ARGUMENT
sẽ được trả về.Để đặt tham số loại chính bị loại trừ, hãy gọi phương thức
setExcludedPrimaryTypes()
khi tạo đối tượngSearchNearbyRequest
. -
Số kết quả tối đa
Chỉ định số lượng kết quả địa điểm tối đa cần trả về. Phải nằm trong khoảng từ 1 đến 20 (mặc định).
Để đặt tham số số lượng kết quả tối đa, hãy gọi phương thức
setMaxResultCount()
khi tạo đối tượngSearchNearbyRequest
. -
Lựa chọn ưu tiên về thứ hạng
Loại thứ hạng cần sử dụng. Nếu bạn bỏ qua thông số này, kết quả sẽ được sắp xếp theo mức độ phổ biến. Có thể là một trong những loại sau:
POPULARITY
(mặc định) Sắp xếp kết quả dựa trên mức độ phổ biến.DISTANCE
Sắp xếp kết quả theo thứ tự tăng dần theo khoảng cách từ vị trí đã chỉ định.
Để đặt tham số ưu tiên thứ hạng, hãy gọi phương thức
setRankPreference()
khi tạo đối tượngSearchNearbyRequest
. -
Mã vùng
Mã khu vực dùng để định dạng phản hồi, được chỉ định dưới dạng giá trị mã CLDR gồm hai ký tự. Không có giá trị mặc định.
Nếu tên quốc gia của trường
FORMATTED_ADDRESS
trong phản hồi khớp vớiregionCode
, thì mã quốc gia sẽ bị bỏ qua khỏiFORMATTED_ADDRESS
.Hầu hết mã CLDR giống hệt với mã ISO 3166-1, ngoại trừ một số trường hợp ngoại lệ đáng chú ý. Ví dụ: ccTLD của Vương quốc Anh là "uk" (.co.uk) trong khi mã ISO 3166-1 là "gb" (về mặt kỹ thuật là cho thực thể "Vương quốc Anh và Bắc Ireland"). Thông số này có thể ảnh hưởng đến kết quả dựa trên luật hiện hành.
Để đặt tham số mã khu vực, hãy gọi phương thức
setRegionCode()
khi tạo đối tượngSearchNearbyRequest
.
Hiển thị thông tin phân bổ trong ứng dụng
Khi ứng dụng của bạn hiển thị thông tin thu được từ PlacesClient
, chẳng hạn như ảnh và bài đánh giá, thì ứng dụng đó cũng phải hiển thị các thông tin ghi công bắt buộc.
Để biết thêm thông tin, hãy xem Chính sách về SDK Địa điểm dành cho Android.