Yêu cầu Nearby Search (Mới) lấy khu vực để tìm kiếm làm thông tin đầu vào, được chỉ định dưới dạng một vòng tròn, xác định bằng toạ độ vĩ độ và kinh độ của điểm giữa của vòng tròn và bán kính tính bằng mét. Yêu cầu này trả về một danh sách các địa điểm phù hợp, mỗi địa điểm được biểu thị bằng một
Place
đối tượng, trong khu vực tìm kiếm đã chỉ định.
Theo mặc định, phản hồi chứa các địa điểm thuộc mọi loại trong khu vực tìm kiếm. Bạn có thể chọn lọc phản hồi bằng cách chỉ định một 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ỉ đưa những địa điểm thuộc loại "nhà hàng", "tiệm bánh" và "quán cà phê" vào 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)
Đưa ra yêu cầu Nearby Search (Mới) bằng cách gọi
PlacesClient.searchNearby,
truyền một đố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 được 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. - Giới hạn 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 lân cận trong ví dụ 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. Yêu cầu 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(); });
Phản hồi Tìm kiếm lân cận (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 phù hợp, với một đối tượngPlacecho mỗi địa điểm phù hợp. - Mỗi đối tượng
Placechỉ chứa các trường được xác định bởi danh sách trường đượ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 như sau:
// 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 mỗi địa điểm phù hợ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 các ví dụ về cách truy cập vào dữ liệu trong đối tượng Place, hãy xem bài viết Truy cập vào các trường dữ liệu của đối tượng Place.
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 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
Placecho đị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 giấu trường là một phương pháp thiết kế tốt để đả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 kích hoạt SKU Tìm kiếm lân cận Pro :
Place.Field.ADDRESS_COMPONENTS
Place.Field.BUSINESS_STATUS
Place.Field.ADDRESS
Place.Field.DISPLAY_NAME>*
* Sử dụng thay vìPlace.Field.NAME, trường này không được dùng nữa.
Place.Field.ICON_BACKGROUND_COLOR
Place.Field.ICON_MASK_URL*
* Sử dụng thay vìPlace.Field.ICON_URL, trường này không được dùng nữa.
Place.Field.ID
Place.Field.LAT_LNG
Place.Field.PHOTO_METADATAS
Place.Field.PLUS_CODE
Place.Field.PRIMARY_TYPE
Place.Field.PRIMARY_TYPE_DISPLAY_NAME
Place.Field.RESOURCE_NAME
Place.Field.TYPES
Place.Field.UTC_OFFSET
Place.Field.VIEWPORT
Place.Field.WHEELCHAIR_ACCESSIBLE_ENTRANCECác trường sau kích hoạt Tìm kiếm lân cận Enterprise SKU:
Place.Field.CURRENT_OPENING_HOURS
Place.Field.CURRENT_SECONDARY_OPENING_HOURS
Place.Field.INTERNATIONAL_PHONE_NUMBER*
* Sử dụng thay vìPlace.Field.PHONE_NUMBER, trường này không được dùng nữa.
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*
* Sử dụng thay vìPlace.Field.USER_RATINGS_TOTAL, trường này không được dùng nữa.
Place.Field.WEBSITE_URICác trường sau kích hoạt Tìm kiếm lân cận Enterprise 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
Để đặ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 một danh sách gồm 2 giá trị trường để chỉ định rằng đối tượng
Placedo một yêu cầu trả về chứa các trườngPlace.Field.IDvà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);
Giới hạn vị trí
Đối tượng
LocationRestrictionxác định khu vực để tìm kiếm được chỉ định dưới dạng một vòng tròn, xác định bằng điểm giữa 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. Xin lưu ý rằng việc chỉ định bán kính quá nhỏ sẽ trả vềZERO_RESULTSdưới dạng phản hồi.Để đặt tham số giới hạn vị trí, hãy gọi
setLocationRestriction()phương thức 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 tìm kiếm.
-
Các loại và loại chính
Cho phép bạn chỉ định một danh sách các loại từ 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 giới hạn loại.
Một địa điểm chỉ có thể có một loại chính từ các loại Bảng A được 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ụngincludedPrimaryTypesvàexcludedPrimaryTypesđể lọc kết quả theo loại chính của một đị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 được 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ụngincludedTypesvàexcludedTypesđể lọc kết quả theo danh sách các loại được 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 loại đã chỉ định. Ví dụ: bạn chỉ định đưa loại chính"restaurant"vào. 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 tìm kiếm được chỉ định có nhiều giới hạn loại, thì chỉ những địa điểm đáp ứng tất cả các giới hạn mới được trả về. 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".Để xem ví dụ về cách sử dụng
includedTypesvàexcludedTypes, hãy xem bài viết Yêu cầu Tìm kiếm lân cận (Mới).Các loại được thêm
Danh sách các loại địa điểm từ Bảng A để tìm kiếm. Nếu bạn bỏ qua tham số này, thì các địa điểm thuộc mọi loại sẽ được trả về.
Để đặt tham số các loại được thêm, hãy gọi phương thức
setIncludedTypes()khi tạo đối tượngSearchNearbyRequest.Các loại bị loại trừ
Danh sách các loại địa điểm từ Bảng A để loại trừ khỏi 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 các đị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 các địa điểm khớp với ít nhất một trong sốincludedTypesvà không cóexcludedTypes.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ả
includedTypesvàexcludedTypes, thì lỗiINVALID_REQUESTsẽ được trả về.Để đặt tham số các loại bị loại trừ, hãy gọi phương thức
setExcludedTypes()khi tạo đối tượngSearchNearbyRequest.Các loại chính được thêm
Danh sách các loại địa điểm chính từ Bảng A để đưa vào tìm kiếm.
Để đặt tham số các loại chính được thêm, hãy gọi phương thức
setIncludedPrimaryTypes()khi tạo đối tượngSearchNearbyRequest.Các loại chính bị loại trừ
Danh sách các loại địa điểm chính từ Bảng A để loại trừ khỏi 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ả
includedPrimaryTypesvàexcludedPrimaryTypes, thì lỗiINVALID_ARGUMENTsẽ được trả về.Để đặt tham số các loại chính bị loại trừ, hãy gọi phương thức
setExcludedPrimaryTypes()khi tạo đối tượngSearchNearbyRequest. -
Số lượng 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 xếp hạng cần sử dụng. Nếu bạn bỏ qua tham số này, thì kết quả sẽ được xếp hạng theo mức độ phổ biến. Có thể là một trong những giá trị sau:
POPULARITY(mặc định) Sắp xếp kết quả dựa trên mức độ phổ biến của chúng.DISTANCESắ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ố lựa chọn ưu tiên về thứ hạng, hãy gọi phương thức
setRankPreference()khi tạo đối tượngSearchNearbyRequest. -
Mã vùng
Mã vùng dùng để định dạng phản hồi, được chỉ định dưới dạng giá trị mã CLDR gồm 2 ký tự. Không có giá trị mặc định.
Nếu tên quốc gia của trường
FORMATTED_ADDRESStrong phản hồi khớp vớiregionCode, thì mã quốc gia sẽ bị bỏ qua khỏiFORMATTED_ADDRESS.Hầu hết các mã CLDR đều giống với mã ISO 3166-1, với 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"). Tham 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ã vùng, 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ị thông tin phân bổ bắt buộc.
Để biết thêm thông tin, hãy xem Chính sách đối với Places SDK cho Android.