Chi tiết địa điểm (Mới)

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

SDK Địa điểm dành cho iOS (Mới) cung cấp cho ứng dụng của bạn nhiều thông tin về các địa điểm, bao gồm tên và địa chỉ, vị trí địa lý được chỉ định dưới dạng vĩ độ/kinh độ, loại địa điểm (chẳng hạn như hộp đêm, cửa hàng thú cưng, bảo tàng) và nhiều thông tin khác. Để truy cập vào thông tin này cho một địa điểm cụ thể, bạn có thể sử dụng mã địa điểm. Đây là một giá trị nhận dạng cố định giúp xác định riêng một địa điểm.

Xem thông tin chi tiết về địa điểm

Lớp GMSPlace chứa thông tin về một địa điểm cụ thể, bao gồm tất cả các trường dữ liệu xuất hiện trong Trường dữ liệu về địa điểm (Mới). Tải đối tượng GMSPlace bằng cách gọi GMSPlacesClient fetchPlaceWithRequest:, truyền đối tượng GMSFetchPlaceRequest và phương thức gọi lại thuộc loại GMSPlaceResultCallback.

Đối tượng GMSFetchPlaceRequest chỉ định:

  • (Bắt buộc) Mã địa điểm, giá trị nhận dạng duy nhất của một địa điểm trong cơ sở dữ liệu của Google Địa điểm và trên Google Maps.
  • (Bắt buộc) Danh sách các trường cần trả về trong đối tượng GMSPlace, còn gọi là mặt nạ trường, do GMSPlaceProperty xác định. 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ề một lỗi.
  • (Không bắt buộc) Mã vùng dùng để định dạng câu trả lời.
  • (Không bắt buộc) Mã phiên được dùng để kết thúc phiên Tự động hoàn thành (Mới).

Tạo yêu cầu Thông tin chi tiết về địa điểm

Ví dụ này lấy địa điểm theo mã nhận dạng, chuyển các thông số sau:

  • Mã địa điểm của ChIJV4k8_9UodTERU5KXbkYpSYs.
  • Danh sách trường chỉ định trả về tên địa điểm và URL của trang web.
  • GMSPlaceResultCallback để xử lý kết quả.

API sẽ gọi phương thức gọi lại đã chỉ định, truyền vào đối tượng GMSPlace. Nếu không tìm thấy địa điểm, thì đối tượng địa điểm là không có.

Swift

// A hotel in Saigon with an attribution.
let placeID = "ChIJV4k8_9UodTERU5KXbkYpSYs"

// Specify the place data types to return.
let myProperties = [GMSPlaceProperty.name, GMSPlaceProperty.website].map {$0.rawValue}

// Create the GMSFetchPlaceRequest object.
let fetchPlaceRequest = GMSFetchPlaceRequest(placeID: placeID, placeProperties: myProperties, sessionToken: nil)

client.fetchPlace(with: fetchPlaceRequest, callback: {
  (place: GMSPlace?, error: Error?) in
  guard let place, error == nil else { return }
  print("Place found: \(String(describing: place.name))")
})

Objective-C

// A hotel in Saigon with an attribution.
NSString *placeID = @"ChIJV4k8_9UodTERU5KXbkYpSYs";

// Specify the place data types to return.
NSArray<NSString *> *myProperties = @[GMSPlacePropertyName, GMSPlacePropertyWebsite];

// Create the GMSFetchPlaceRequest object.
GMSFetchPlaceRequest *fetchPlaceRequest = [[GMSFetchPlaceRequest alloc] initWithPlaceID:placeID placeProperties: myProperties sessionToken:nil];

[placesClient fetchPlaceWithRequest: fetchPlaceRequest callback: ^(GMSPlace *_Nullable place, NSError *_Nullable error) {
    if (error != nil) {
      NSLog(@"An error occurred %@", [error localizedDescription]);
      return;
    } else {
    NSLog(@"Place Found: %@", place.name);
    NSLog(@"The place URL: %@", place.website);
  }
}];

GooglePlacesSwift

// A hotel in Saigon with an attribution.
let placeID = "ChIJV4k8_9UodTERU5KXbkYpSYs"
let fetchPlaceRequest = FetchPlaceRequest(
  placeID: placeID,
  placeProperties: [.name, .website]
)
switch await placesClient.fetchPlace(with: fetchPlaceRequest) {
case .success(let place):
  // Handle place
case .failure(let placesError):
  // Handle error
}

Câu trả lời cho Thông tin về địa điểm

Thông tin chi tiết về địa điểm sẽ trả về một đối tượng GMSPlace chứa thông tin chi tiết về địa điểm. Chỉ những trường được chỉ định trong danh sách trường mới được điền sẵn vào đối tượng GMSPlace.

Cùng với các trường dữ liệu, đối tượng GMSPlace trong phản hồi chứa các hàm thành phần sau đây:

  • isOpen tính toán xem một địa điểm có mở cửa vào thời gian nhất định hay không.
  • isOpenAtDate tính toán xem một địa điểm có mở cửa vào một ngày nhất định hay không.

Thông số bắt buộc

Sử dụng đối tượng GMSFetchPlaceRequest để chỉ định các tham số bắt buộc.

Mã địa điểm

Mã địa điểm được sử dụng trong SDK Địa điểm dành cho iOS giống với giá trị nhận dạng được sử dụng trong API Địa điểm, SDK Địa điểm dành cho Android và các API khác của Google. Mỗi mã địa điểm chỉ có thể tham chiếu đến một địa điểm, nhưng một địa điểm có thể có nhiều mã địa điểm.

Có những trường hợp có thể khiến một địa điểm nhận được mã địa điểm mới. Ví dụ: tình trạng này có thể xảy ra nếu một doanh nghiệp chuyển đến địa điểm mới.

Khi yêu cầu một địa điểm bằng cách chỉ định mã địa điểm, bạn có thể yên tâm rằng mình sẽ luôn nhận được cùng một địa điểm trong phản hồi (nếu địa điểm đó vẫn tồn tại). Tuy nhiên, hãy lưu ý rằng phản hồi có thể chứa một mã địa điểm khác với mã trong yêu cầu của bạn.

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 để trả về trong đối tượng GMSPlace cho địa điểm dưới dạng mặt nạ trường (field mask). Để xác định mặt nạ cho trường (field mask), hãy truyền một mảng các giá trị từ GMSPlaceProperty sang đối tượng GMSFetchPlaceRequest. Che giấu trường là một phương pháp thiết kế hiệu quả để đảm bảo 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 kích hoạt SKU Thông tin chi tiết về địa điểm (Chỉ mã nhận dạng):

    GMSPlacePropertyPlaceID, GMSPlacePropertyName, GMSPlacePropertyPhotos

  • Các trường sau đây kích hoạt SKU Thông tin chi tiết về địa điểm (Chỉ vị trí):

    GMSPlacePropertyAddressComponents, GMSPlacePropertyFormattedAddress, GMSPlacePropertyCoordinate, GMSPlacePropertyPlusCode, GMSPlacePropertyTypes, GMSPlacePropertyViewport

  • Các trường sau đây kích hoạt SKU Thông tin chi tiết về địa điểm (Cơ bản):

    GMSPlacePropertyBusinessStatus, GMSPlacePropertyIconBackgroundColor, GMSPlacePropertyIconImageURL, GMSPlacePropertyUTCOffsetMinutes, GMSPlacePropertyWheelchairAccessibleEntrance

  • Các trường sau đây kích hoạt SKU Thông tin chi tiết về địa điểm (Nâng cao):

    GMSPlacePropertyCurrentOpeningHours, GMSPlacePropertySecondaryOpeningHours, GMSPlacePropertyPhoneNumber, GMSPlacePropertyPriceLevel, GMSPlacePropertyRating, GMSPlacePropertyOpeningHours, GMSPlacePropertyUserRatingsTotal, GMSPlacePropertyWebsite

  • Sau đây là các trường kích hoạt SKU Thông tin chi tiết về địa điểm (ưu tiên):

    GMSPlacePropertyCurbsidePickup, GMSPlacePropertyDelivery, GMSPlacePropertyDineIn, GMSPlacePropertyEditorialSummary, GMSPlacePropertyReservable, GMSPlacePropertyReviews, GMSPlacePropertyServesBeer, GMSPlacePropertyServesBreakfast, GMSPlacePropertyServesBrunch, GMSPlacePropertyServesDinner, GMSPlacePropertyServesLunch, GMSPlacePropertyServesVegetarianFood, GMSPlacePropertyServesWine, GMSPlacePropertyTakeout

Ví dụ sau đây chuyển một danh sách hai giá trị trường để chỉ định rằng đối tượng GMSPlace được một yêu cầu trả về chứa các trường nameplaceID:

Swift

// Specify the place data types to return.
let fields: [GMSPlaceProperty] = [.placeID, .name]
  

Objective-C

// Specify the place data types to return.
NSArray<GMSPlaceProperty *> *fields = @[GMSPlacePropertyPlaceID, GMSPlacePropertyName];
  

GooglePlacesSwift

// Specify the place data types to return.
let fields: [PlaceProperty] = [.placeID, .displayName]
    

Thông số tùy chọn

Sử dụng đối tượng GMSFetchPlaceRequest để chỉ định các tham số không bắt buộc.

regionCode

Mã vùng dùng để định dạng phản hồi, được chỉ định dưới dạng giá trị mã CLDR hai ký tự. Tham số này cũng có thể ảnh hưởng đến kết quả tìm kiếm. Không có giá trị mặc định.

Nếu tên quốc gia của trường địa chỉ trong phản hồi khớp với mã vùng, thì mã quốc gia sẽ bị loại khỏi địa chỉ.

Hầu hết các mã CLDR đều giống hệt với mã ISO 3166-1, trừ một số trường hợp ngoại lệ đáng chú ý. Ví dụ: ccTLD (miền cấp cao nhất theo mã quốc gia) của Vương quốc Anh là "uk" (.co.uk) trong khi mã ISO 3166-1 của quốc gia này là"gb " (về mặt kỹ thuật, mã này là"UK " (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.

sessionToken

Mã thông báo phiên là các chuỗi do người dùng tạo, theo dõi các lệnh gọi Tự động hoàn thành (Mới) dưới dạng "phiên hoạt động". Tính năng Tự động hoàn thành (Mới) sử dụng mã phiên hoạt động để nhóm các giai đoạn truy vấn và lựa chọn vị trí của nội dung tìm kiếm tự động hoàn thành của người dùng vào một phiên riêng biệt nhằm mục đích thanh toán. Mã thông báo phiên được chuyển vào các lệnh gọi Chi tiết địa điểm (Mới) theo sau các lệnh gọi Tự động hoàn thành (Mới). Để biết thêm thông tin, hãy xem bài viết Mã thông báo phiên.

Hiển thị thuộc tính trong ứng dụng của bạn

Khi hiện thông tin thu thập được từ GMSPlacesClient, chẳng hạn như ảnh và bài đánh giá, ứng dụng cũng phải cho thấy các thuộc tính bắt buộc.

Ví dụ: thuộc tính reviews của đối tượng GMSPlacesClient chứa một mảng gồm tối đa 5 đối tượng GMSPlaceReview. Mỗi đối tượng GMSPlaceReview có thể chứa các thuộc tính và tác giả. Nếu hiển thị bài đánh giá trong ứng dụng của mình, bạn cũng phải hiển thị mọi ghi công hoặc tác giả.

Để biết thêm thông tin, vui lòng xem tài liệu về mô hình phân bổ.