Tìm kiếm lân cận (Mới)

Chọn nền tảng: Android iOS JavaScript Dịch vụ web

Nhà phát triển ở Khu vực kinh tế Châu Âu (EEA)

Yêu cầu Nearby Search (Mới) sẽ lấy khu vực cần tìm kiếm làm dữ liệu đầ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 trung tâm 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 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 sẽ 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 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 vào 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)

Đưa ra yêu cầu Nearby Search (Mới) bằng cách gọi PlacesClient.searchNearby, chuyể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 đượ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.
  • Hạn chế về vị trí đối với khu vực tìm kiếm, được xác định là cặp vĩ độ/kinh độ và giá trị bán kính, tính bằng mét.

Ví dụ này về yêu cầu Nearby Search 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 "nhà hàng pizza" và "nhà hàng Mỹ".

// 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 biểu thị phản hồi từ yêu cầu tìm kiếm. Đối tượng SearchNearbyResponse chứa:

  • Danh sách các đối tượng Place biểu thị tất cả các địa điểm phù hợp, với một đối tượng Place cho mỗi địa điểm phù hợp.
  • Mỗi đối tượng Place chỉ 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 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 Địa điểm.

Tham 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 Place Details, 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ượng SearchNearbyRequest. Việc che giấu 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 đây:

    • Các trường sau đây kích hoạt Nearby Search Pro SKU:

      Place.Field.ADDRESS_COMPONENTS
      Place.Field.BUSINESS_STATUS
      Place.Field.ADDRESS
      Place.Field.DISPLAY_NAME >*
          * Sử dụng thay cho Place.Field.NAME (không dùng nữa).
      Place.Field.ICON_BACKGROUND_COLOR
      Place.Field.ICON_MASK_URL*
          * Sử dụng thay cho Place.Field.ICON_URL (không 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_ENTRANCE

      Để xem danh sách đầy đủ các trường và SKU liên quan, hãy xem bài viết Các trường dữ liệu địa điểm (Mới).

    • Các trường sau đây kích hoạt SKU Tìm kiếm lân cận Enterprise:

      Place.Field.CURRENT_OPENING_HOURS
      Place.Field.CURRENT_SECONDARY_OPENING_HOURS
      Place.Field.INTERNATIONAL_PHONE_NUMBER*
          * Sử dụng thay cho Place.Field.PHONE_NUMBER (không 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 cho Place.Field.USER_RATINGS_TOTAL (không dùng nữa).
      Place.Field.WEBSITE_URI

      Để xem danh sách đầy đủ các trường và SKU liên quan, hãy xem bài viết Các trường dữ liệu địa điểm (Mới).

    • Các trường sau đây kích hoạt SKU Tìm kiếm lân cận Enterprise Plus:

      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

      Để xem danh sách đầy đủ các trường và SKU liên quan, hãy xem bài viết Các trường dữ liệu địa điểm (Mới).

    Để đặt tham số danh sách trường, hãy gọi phương thức setPlaceFields() khi tạo đối tượng SearchNearbyRequest.

    Ví dụ sau đây xác định danh sách gồm 2 giá trị trường để chỉ định rằng đối tượng Place do yêu cầu trả về chứa các trường Place.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 khu vực cần tìm kiếm được chỉ định dưới dạng một vòng tròn, xác định bằng điểm trung tâ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. Xin lưu ý rằng việc chỉ định bán kính quá nhỏ sẽ trả về ZERO_RESULTS làm phản hồi.

    Để đặt tham số hạn chế về vị trí, hãy gọi setLocationRestriction() phương thức khi tạo đối tượng SearchNearbyRequest.

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 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 hạn chế về loại.

    Một địa điểm chỉ có thể có một loại chính trong Bảng A về các loại đượ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ụng includedPrimaryTypes 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 trong 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ụng includedTypes và 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 vào loại chính "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 tìm kiếm được chỉ định có nhiều hạn chế về loại, thì chỉ những địa điểm đáp ứng tất cả các hạn chế 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 includedTypes và 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 trong Bảng A cần 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ượng SearchNearbyRequest.

    Các loại bị loại trừ

    Danh sách các loại địa điểm trong Bảng A cần 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 sẽ bao gồm các địa điểm khớp với ít nhất một trong số includedTypes và 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ả includedTypes và excludedTypes, thì lỗi INVALID_REQUEST sẽ đượ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ượng SearchNearbyRequest.

    Các loại chính được thêm

    Danh sách các loại địa điểm chính trong Bảng A cần thêm 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ượng SearchNearbyRequest.

    Các loại chính bị loại trừ

    Danh sách các loại địa điểm chính trong Bảng A cần 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ả includedPrimaryTypes và excludedPrimaryTypes, thì lỗi INVALID_ARGUMENT sẽ đượ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ượng SearchNearbyRequest.

  • 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ượng SearchNearbyRequest.

  • 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 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ố 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ượng SearchNearbyRequest.

  • 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ới regionCode, thì mã quốc gia sẽ bị bỏ qua trong FORMATTED_ADDRESS.

    Hầu hết mã CLDR đều giống với mã ISO 3166-1, ngoại trừ một số trường hợp đá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ã khu vực, hãy gọi phương thức setRegionCode() khi tạo đối tượng SearchNearbyRequest.

Hiển thị thông tin ghi nguồn 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á, ứng dụng cũng phải hiển thị thông tin ghi nguồn bắt buộc.

Để biết thêm thông tin, hãy xem Các chính sách đối với Places SDK cho Android.