Dịch vụ Tự động hoàn thành (Mới) là một API iOS trả về các đề xuất về địa điểm để phản hồi một yêu cầu. Trong yêu cầu, hãy chỉ định một chuỗi tìm kiếm văn bản và các giới hạn địa lý kiểm soát khu vực tìm kiếm.
Dịch vụ Tự động hoàn thành (Mới) có thể so khớp theo từ đầy đủ và chuỗi con của dữ liệu đầu vào, phân giải tên địa điểm, địa chỉ và mã cộng. Do đó, các ứng dụng có thể gửi truy vấn khi người dùng nhập để cung cấp đề xuất địa điểm nhanh chóng.
Đề xuất địa điểm là các địa điểm, chẳng hạn như doanh nghiệp, địa chỉ và điểm tham quan, dựa trên chuỗi văn bản đầu vào và khu vực tìm kiếm đã chỉ định.
Ví dụ: bạn gọi API bằng cách sử dụng một chuỗi chứa một phần dữ liệu đầu vào của người dùng, "Spagh", với khu vực tìm kiếm giới hạn ở Thành phố New York. Sau đó, phản hồi sẽ chứa danh sách đề xuất địa điểm khớp với chuỗi tìm kiếm và khu vực tìm kiếm, chẳng hạn như nhà hàng có tên "Cafe Spaghetti", cùng với thông tin chi tiết về địa điểm đó.
Đề xuất địa điểm được trả về được thiết kế để hiển thị cho người dùng để họ có thể chọn địa điểm mong muốn. Bạn có thể tạo yêu cầu Thông tin chi tiết về địa điểm (Mới) để biết thêm thông tin về bất kỳ đề xuất địa điểm nào được trả về.
Bạn có thể tích hợp chức năng Tự động hoàn thành (Mới) vào ứng dụng theo hai cách chính:
- Nhận thông tin dự đoán về địa điểm theo phương thức lập trình: Gọi trực tiếp API để truy xuất thông tin dự đoán và hiển thị thông tin đó trong giao diện người dùng tuỳ chỉnh.
- Thêm tiện ích Tự động hoàn thành địa điểm: Cung cấp trải nghiệm tự động hoàn thành nội dung tìm kiếm sẵn sàng sử dụng, hiển thị nội dung gợi ý khi người dùng nhập.
Nhận thông tin dự đoán về địa điểm theo phương thức lập trình
Yêu cầu tự động hoàn thành (Mới)
Tạo yêu cầu tự động hoàn thành bằng cách gọi một phương thức trên GMSPlacesClient
.
Bạn có thể truyền các tham số trong đối tượng GMSAutocompleteRequest
. Phản hồi cung cấp các đề xuất Tự động hoàn thành trong đối tượng GMSAutocompletePlaceSuggestion
.
Bạn phải có khoá API và tham số query
. Bạn cũng có thể thêm GMSAutocompleteSessionToken
để liên kết các yêu cầu với một phiên thanh toán và GMSAutocompleteFilter
để áp dụng cho kết quả.
Phiên bản SDK Swift của Places
Tạo yêu cầu tự động hoàn thành bằng cách gọi một phương thức trên PlacesClient
.
Bạn có thể truyền các tham số trong đối tượng AutocompleteRequest
. Phản hồi cung cấp các đề xuất Tự động hoàn thành trong đối tượng AutocompletePlaceSuggestion
.
Bạn phải có khoá API và tham số query
. Bạn cũng có thể thêm AutocompleteSessionToken
để liên kết các yêu cầu với một phiên thanh toán và AutocompleteFilter
để áp dụng cho kết quả.
Để biết thêm thông tin về các tham số bắt buộc và không bắt buộc, hãy xem phần tham số của tài liệu này.
SDK Places Swift
let center = (37.3913916, -122.0879074) let northEast = (37.388162, -122.088137) let southWest = (37.395804, -122.077023) let bias = RectangularCoordinateRegion(northEast: northEast, southWest: southWest) let filter = AutocompleteFilter(types: [ .restaurant ], origin: center, coordinateRegionBias: bias) let autocompleteRequest = AutocompleteRequest(query: "Sicilian piz", filter: filter) switch await placesClient.fetchAutocompleteSuggestions(with: autocompleteRequest) { case .success(let autocompleteSuggestions): // Handle suggestions. case .failure(let placesError): // Handle error. }
Swift
let token = GMSAutocompleteSessionToken() let northWestBounds = CLLocationCoordinate2DMake(40.921628, -73.700051) let southEastBounds = CLLocationCoordinate2DMake(40.477398, -74.259087) let filter = GMSAutocompleteFilter() filter.types = [kGMSPlaceTypeRestaurant] filter.locationBias = GMSPlaceRectangularLocationOption(northWestBounds, southEastBounds) let request = GMSAutocompleteRequest(query:"Spagh") request.filter = filter request.sessionToken = token GMSPlacesClient.shared().fetchAutocompleteSuggestions(from: request, callback: { ( results, error ) in if let error = error { print("Autocomplete error: \(error)") return } if let autocompleteResults = results { for result in autocompleteResults { print("Result \(String(describing: result.placeSuggestion?.placeID)) with \(String(describing: result.placeSuggestion?.attributedFullText))") } } })
Objective-C
CLLocationCoordinate2D northEast = CLLocationCoordinate2DMake(37.388162, -122.088137); CLLocationCoordinate2D southWest = CLLocationCoordinate2DMake(37.395804, -122.077023); GMSAutocompleteFilter *filter = [[GMSAutocompleteFilter alloc] init]; filter.types = @[ kGMSPlaceTypeRestaurant ]; filter.locationBias = GMSPlaceRectangularLocationOption(northEast, southWest); GMSAutocompleteRequest *request = [[GMSAutocompleteRequest alloc] initWithQuery:@"Sicilian piz"]; request.sessionToken = token; request.filter = filter; [[GMSPlacesClient sharedClient] fetchAutocompleteSuggestionsFromRequest:request callback:^(NSArray<GMSAutocompleteSuggestion *> * results, NSError * error){ // Handle response for (GMSAutocompleteSuggestion *suggestion in results) { if (suggestion.placeSuggestion) { // Show place suggestion data. } } }];
Câu trả lời tự động hoàn thành (Mới)
Tính năng tự động hoàn thành trả về một mảng gồm tối đa 5 thực thể GMSAutocompleteSuggestion
. Mảng này chứa:
placeID
types
: Các loại áp dụng cho địa điểm này.distanceMeters
: Khoảng cách từ gốc.attributedFullText
: Văn bản đầy đủ mà con người có thể đọc được của một đề xuất.attributedPrimaryText
: Văn bản chính mà con người có thể đọc được của một đề xuất.attributedSecondaryText
: Văn bản phụ mà con người có thể đọc được của một đề xuất.structuredFormat
: Tên cụ thể và văn bản phân biệt, chẳng hạn như thành phố hoặc khu vực.
Thông số bắt buộc
truy vấn
Chuỗi văn bản cần tìm kiếm. Chỉ định từ và chuỗi con đầy đủ, tên địa điểm, địa chỉ và mã cộng. Dịch vụ Tự động hoàn thành (Mới) trả về các kết quả trùng khớp dựa trên chuỗi này và sắp xếp kết quả dựa trên mức độ liên quan được nhận thấy.
Thông số tùy chọn
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) – cả lệnh gọi được thực hiện thông qua tiện ích và lệnh gọi theo lập trình – dưới dạng "phiên". Tính năng Tự động hoàn thành (Mới) sử dụng mã thông báo phiên để nhóm các giai đoạn truy vấn và lựa chọn của một lượt tìm kiếm tự động hoàn thành của người dùng thành một phiên riêng biệt cho mục đích thanh toán. Để biết thêm thông tin, hãy xem phần Mã thông báo phiên.
Các thông số AutocompleteFilter không bắt buộc
loại
Một địa điểm chỉ có thể có một loại chính trong số các loại Bảng A hoặc Bảng B đượ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
.
Theo mặc định, API sẽ trả về tất cả địa điểm dựa trên thông số input
, bất kể giá trị loại chính được liên kết với địa điểm đó. Hạn chế kết quả thuộc một loại chính hoặc các loại chính nhất định bằng cách truyền tham số types
.
Sử dụng tham số này để chỉ định tối đa 5 giá trị loại trong Bảng A hoặc Bảng B. Một địa điểm phải khớp với một trong các giá trị loại chính được chỉ định để được đưa vào phản hồi.
Yêu cầu sẽ bị từ chối kèm theo lỗi INVALID_REQUEST
nếu:
- Chỉ định nhiều hơn 5 loại.
- Mọi loại không được nhận dạng đều được chỉ định.
Ví dụ: để giới hạn kết quả ở các cửa hàng bán đồ thể thao, hãy chỉ định loại đó trong AutocompleteFilter
:
SDK Places Swift
let filter = AutocompleteFilter(types: [ PlaceType(rawValue: "sporting_goods_store") ])
Swift
let filter = GMSAutocompleteFilter() filter.types = ["sporting_goods_store"]
Objective-C
GMSAutocompleteFilter *filter = [[GMSAutocompleteFilter alloc] init]; filter.types = @[ "sporting_goods_store" ];
quốc gia
Chỉ bao gồm kết quả từ danh sách các khu vực được chỉ định, được chỉ định dưới dạng một mảng gồm tối đa 15 giá trị gồm hai ký tự ccTLD ("miền cấp cao nhất"). Nếu bạn bỏ qua, hệ thống sẽ không áp dụng quy định hạn chế nào cho phản hồi. Ví dụ: để giới hạn các khu vực ở Đức và Pháp:
SDK Places Swift
let filter = AutocompleteFilter(countries: ["DE", "FR"])
Swift
let filter = GMSAutocompleteFilter() filter.countries = ["DE", "FR"]
Objective-C
GMSAutocompleteFilter *filter = [[GMSAutocompleteFilter alloc] init]; filter.countries = @[ @"DE", @"FR" ];
Nếu bạn chỉ định cả locationRestriction
và countries
, thì kết quả sẽ nằm trong khu vực giao nhau của hai chế độ cài đặt.
inputOffset
Độ dời ký tự Unicode dựa trên 0 cho biết vị trí con trỏ trong input
. Vị trí con trỏ có thể ảnh hưởng đến nội dung dự đoán được trả về. Nếu trống, giá trị này sẽ mặc định là độ dài input
.
locationBias hoặc locationRestriction
Bạn có thể chỉ định locationBias
hoặc locationRestriction
, nhưng không được chỉ định cả hai để xác định vùng tìm kiếm. Hãy coi locationRestriction
là chỉ định khu vực mà kết quả phải nằm trong đó và locationBias
là chỉ định khu vực mà kết quả phải ở gần nhưng có thể nằm ngoài khu vực đó.
locationBias
chỉ định một khu vực để tìm kiếm. Vị trí này đóng vai trò là độ lệch, nghĩa là có thể trả về kết quả xung quanh vị trí đã chỉ định, bao gồm cả kết quả bên ngoài khu vực đã chỉ định.locationRestriction
chỉ định một khu vực để tìm kiếm. Hệ thống sẽ không trả về kết quả nằm ngoài khu vực được chỉ định.
Chỉ định vùng locationBias
hoặc locationRestriction
dưới dạng khung nhìn hình chữ nhật hoặc hình tròn.
Đườ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 nằm trong khoảng từ 0 đến 50000. Giá trị mặc định là 0.0. Đối với locationRestriction
, bạn phải đặt bán kính thành một giá trị lớn hơn 0.0.
Nếu không, yêu cầu sẽ không trả về kết quả nào.
Ví dụ:
SDK Places Swift
let center = CLLocationCoordinate2DMake(40.477398, -74.259087) let bias = CircularCoordinateRegion(center: center, radius: 1000.0) let filter = AutocompleteFilter(coordinateRegionBias: bias)
Swift
let center = CLLocationCoordinate2DMake(40.730610, -73.935242) let radius = 1000.0 filter.locationBias = GMSPlaceCircularLocationOption(center, radius)
Objective-C
CLLocationCoordinate2D center = CLLocationCoordinate2DMake(40.730610, -73.935242); radius = 1000.0; GMSAutocompleteFilter *filter = [[GMSAutocompleteFilter alloc] init]; filter.locationBias = GMSPlaceCircularLocationOption(center, radius);
Hình chữ nhật là khung nhìn vĩ độ-kinh độ, được biểu thị dưới dạng hai điểm low
và high
đối diện nhau theo đường chéo. Khung nhìn được coi là một vùng kín, nghĩa là khung nhìn bao gồm cả ranh giới của nó. Giới hạn vĩ độ phải nằm trong khoảng từ -90 đến 90 độ và giới hạn kinh độ phải nằm trong khoảng từ -180 đến 180 độ:
- Nếu
low
=high
, khung nhìn sẽ bao gồm một điểm duy nhất đó. - Nếu
low.longitude
>high.longitude
, thì phạm vi kinh độ sẽ bị đảo ngược (cửa sổ xem sẽ vượt qua đường kinh độ 180 độ). - Nếu
low.longitude
= -180 độ vàhigh.longitude
= 180 độ, thì khung nhìn sẽ bao gồm tất cả kinh độ. - Nếu
low.longitude
= 180 độ vàhigh.longitude
= -180 độ, thì phạm vi kinh độ sẽ trống.
Bạn phải điền cả low
và high
, đồng thời hộp được biểu thị không được trống. Khung nhìn trống sẽ dẫn đến lỗi.
Ví dụ: khung nhìn này bao gồm toàn bộ thành phố New York:
SDK Places Swift
let northEast = CLLocationCoordinate2DMake(40.477398, -74.259087) let southWest = CLLocationCoordinate2DMake(40.921628, -73.700051) let filter = AutocompleteFilter(coordinateRegionBias: bias)
Swift
let high = CLLocationCoordinate2DMake(40.921628, -73.700051) let low = CLLocationCoordinate2DMake(40.477398, -74.259087) let filter = GMSAutocompleteFilter() filter.locationBias = GMSPlaceRectangularLocationOption(high, low)
Objective-C
CLLocationCoordinate2D high = CLLocationCoordinate2DMake(40.477398, -74.259087); CLLocationCoordinate2D low = CLLocationCoordinate2DMake(440.921628, -73.700051); GMSAutocompleteFilter *filter = [[GMSAutocompleteFilter alloc] init]; filter.locationBias = GMSPlaceRectangularLocationOption(high, low);
nguồn gốc
Điểm gốc để tính toán khoảng cách theo đường thẳng đến đích (được trả về dưới dạng distanceMeters
). Nếu bạn bỏ qua giá trị này, hệ thống sẽ không trả về khoảng cách theo đường thẳng. Phải được chỉ định dưới dạng toạ độ vĩ độ và kinh độ:
SDK Places Swift
let filter = AutocompleteFilter(origin: CLLocation(latitude: 37.395804, longitude: -122.077023))
Swift
let filter = GMSAutocompleteFilter() filter.origin = CLLocation(latitude: 37.395804, longitude: -122.077023)
Objective-C
GMSAutocompleteFilter *filter = [[GMSAutocompleteFilter alloc] init]; filter.origin = [[CLLocation alloc] initWithLatitude:37.395804 longitude: -122.077023];
regionCode
Mã khu vực dùng để định dạng phản hồi, được chỉ định dưới dạng giá trị hai ký tự ccTLD ("miền cấp cao nhất"). Hầu hết mã ccTLD 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) còn 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").
Nếu bạn chỉ định mã vùng không hợp lệ, API sẽ trả về lỗi INVALID_ARGUMENT
. Thông số này có thể ảnh hưởng đến kết quả dựa trên luật hiện hành.
shouldIncludePureServiceAreaBusinesses
Nếu true
, trả về các doanh nghiệp cung cấp dịch vụ tại cơ sở khách hàng thuần tuý trong mảng phản hồi. Doanh nghiệp cung cấp dịch vụ tại cơ sở khách hàng thuần tuý là một doanh nghiệp trực tiếp cung cấp dịch vụ tận nơi hoặc giao hàng cho khách hàng, nhưng không phục vụ khách hàng tại địa chỉ của doanh nghiệp.
Ví dụ:
SDK Places Swift
let filter = AutocompleteFilter() filter.shouldIncludePureServiceAreaBusinesses = true
Swift
let filter = AutocompleteFilter() filter.shouldIncludePureServiceAreaBusinesses = true
Objective-C
GMSAutocompleteFilter *filter = [[GMSAutocompleteFilter alloc] init]; filter.shouldIncludePureServiceAreaBusinesses = YES;
Thêm tiện ích Place Autocomplete
Để dễ dàng cung cấp trải nghiệm tự động hoàn thành địa điểm nhất quán hơn, bạn có thể thêm tiện ích Tự động hoàn thành địa điểm vào ứng dụng. Tiện ích này cung cấp một giao diện toàn màn hình chuyên dụng để xử lý dữ liệu đầu vào của người dùng và hiển thị thông tin dự đoán về địa điểm cho người dùng trong khi trả về các đối tượng AutocompletePlaceSuggestion
cho ứng dụng. Sau đó, bạn có thể tạo yêu cầu Thông tin chi tiết về địa điểm (Mới) để nhận thêm thông tin về bất kỳ thông tin dự đoán địa điểm nào.
Giống như khi nhận thông tin dự đoán về địa điểm theo phương thức lập trình, tiện ích Tự động hoàn thành địa điểm cho phép bạn sử dụng mã thông báo phiên để nhóm các yêu cầu tự động hoàn thành thành phiên cho mục đích thanh toán. Bạn có thể truyền mã thông báo phiên bằng cách gọi AutocompleteSessionToken()
.
Nếu bạn không cung cấp mã thông báo phiên, tiện ích sẽ tạo mã thông báo phiên Tự động hoàn thành cho bạn. Sau đó, bạn có thể lấy mã thông báo phiên này từ lệnh gọi lại onSelection
. Để biết thêm thông tin về cách sử dụng mã thông báo phiên, hãy xem bài viết Giới thiệu về mã thông báo phiên.
Khi giá trị liên kết show
được đặt thành true
, người dùng sẽ được chuyển đến một chế độ xem toàn màn hình để họ có thể chọn một địa điểm. Khi người dùng nhập, tiện ích sẽ trả về các đề xuất về địa điểm như doanh nghiệp, địa chỉ và điểm yêu thích. Khi người dùng chọn một địa điểm, tiện ích sẽ gọi trình xử lý onSelection
bằng địa điểm đã chọn và đóng chế độ xem toàn màn hình.
Đặt các thông số tiện ích Tự động hoàn thành
Ngoài các tham số có sẵn bằng cách lập trình, tiện ích Tự động hoàn thành địa điểm cũng cung cấp các tham số sau.
hiện (lên)/cho thấy
show
chỉ định xem tiện ích có hiển thị hay không.
AutocompleteUICustomization
Các thông số AutocompleteUICustomization
chỉ định các tuỳ chỉnh giao diện người dùng để áp dụng cho tiện ích. Các tuỳ chọn tuỳ chỉnh là:
AutocompleteListDensity
. Tham số này cho phép bạn chọn mật độ của danh sách đề xuất,multiLine
hoặctwoLine
.AutocompleteUIIcon
. Tham số này cho phép bạn chọn hiển thị biểu tượng mặc định cho từng mục trong danh sách hay không.
onSelection
Phần đóng để chạy khi một địa điểm được chọn.
onError
Phương thức đóng để chạy khi xảy ra lỗi. PlacesError
sẽ được truyền nếu xảy ra lỗi.
Ví dụ về tính năng Tự động hoàn thành (Mới)
Sử dụng locationRestriction và locationBias
Tính năng Tự động hoàn thành (Mới) sử dụng tính năng thiên vị IP theo mặc định để kiểm soát khu vực tìm kiếm. Với độ lệch IP, API sử dụng địa chỉ IP của thiết bị để tạo độ lệch cho kết quả. Bạn có thể tuỳ ý sử dụng locationRestriction
hoặc
locationBias
, nhưng không được sử dụng cả hai để chỉ định
một khu vực cần tìm kiếm.
Quy định hạn chế về vị trí chỉ định khu vực cần tìm kiếm. Hệ thống sẽ không trả về kết quả nằm ngoài khu vực được chỉ định. Ví dụ sau đây sử dụng quy tắc hạn chế vị trí để giới hạn yêu cầu ở một quy tắc hạn chế vị trí hình tròn có bán kính 5.000 mét, tâm là San Francisco:
SDK Places Swift
let center = (37.775061, -122.419400) let radius = 5000.0 let restriction = CircularCoordinateRegion(center: center, radius: radius) let filter = AutocompleteFilter(coordinateRegionRestriction: restriction) let token = AutocompleteSessionToken() let autocompleteRequest = AutocompleteRequest(query: "Sicilian piz", sessionToken: token, filter: filter) switch await placesClient.fetchAutocompleteSuggestions(with: autocompleteRequest) { case .success(let autocompleteSuggestions): for suggestion in autocompleteSuggestions { switch suggestion { case .place: // Show place suggestion data. } } case .failure(let placesError): // Handle error. }
Swift
let token = GMSAutocompleteSessionToken() let center = CLLocationCoordinate2DMake(37.775061, -122.419400) let radius = 5000.0 let filter = GMSAutocompleteFilter() filter.locationRestriction = GMSPlaceCircularLocationOption(center, radius) let request = GMSAutocompleteRequest(query:"Piz") request.filter = filter request.sessionToken = token GMSPlacesClient.shared().fetchAutocompleteSuggestions(from: request, callback: { ( results, error ) in if let error = error { print("Autocomplete error: \(error)") return } if let autocompleteResults = results { for result in autocompleteResults { print("Result \(String(describing: result.placeSuggestion?.placeID)) with \(String(describing: result.placeSuggestion?.attributedFullText))") } } })
Objective-C
CLLocationCoordinate2D center = CLLocationCoordinate2DMake(37.775061, -122.419400); radius = 5000.0; GMSAutocompleteFilter *filter = [[GMSAutocompleteFilter alloc] init]; filter.locationRestriction = GMSPlaceCircularLocationOption(center, radius); GMSAutocompleteRequest *request = [[GMSAutocompleteRequest alloc] initWithQuery:@"Sicilian piz"]; request.sessionToken = token; request.filter = filter; [[GMSPlacesClient sharedClient] fetchAutocompleteSuggestionsFromRequest:request callback:^(NSArray<GMSAutocompleteSuggestion *> * results, NSError * error){ // Handle response for (GMSAutocompleteSuggestion *suggestion in results) { if (suggestion.placeSuggestion) { // Show place suggestion data. } } }];
Với độ lệch vị trí, vị trí đóng vai trò là độ lệch, tức là các kết quả xung quanh vị trí được chỉ định có thể được trả về, bao gồm cả các kết quả nằm ngoài khu vực được chỉ định. Ví dụ tiếp theo thay đổi yêu cầu trước đó để sử dụng độ lệch vị trí:
SDK Places Swift
let center = (37.775061, -122.419400) let radius = 5000.0 let bias = CircularCoordinateRegion(center: center, radius: radius) let filter = AutocompleteFilter(coordinateRegionBias: bias) let token = AutocompleteSessionToken() let autocompleteRequest = AutocompleteRequest(query: "Sicilian piz", sessionToken: token, filter: filter) switch await placesClient.fetchAutocompleteSuggestions(with: autocompleteRequest) { case .success(let autocompleteSuggestions): for suggestion in autocompleteSuggestions { switch suggestion { case .place: // Show place suggestion data. } } case .failure(let placesError): // Handle error. }
Swift
let token = GMSAutocompleteSessionToken() let center = CLLocationCoordinate2DMake(37.775061, -122.419400) let radius = 5000.0 let filter = GMSAutocompleteFilter() filter.locationBias = GMSPlaceCircularLocationOption(center, radius) let request = GMSAutocompleteRequest(query:"Piz") request.filter = filter request.sessionToken = token GMSPlacesClient.shared().fetchAutocompleteSuggestions(from: request, callback: { ( results, error ) in if let error = error { print("Autocomplete error: \(error)") return } if let autocompleteResults = results { for result in autocompleteResults { print("Result \(String(describing: result.placeSuggestion?.placeID)) with \(String(describing: result.placeSuggestion?.attributedFullText))") } } })
Objective-C
CLLocationCoordinate2D center = CLLocationCoordinate2DMake(37.775061, -122.419400); radius = 5000.0; GMSAutocompleteFilter *filter = [[GMSAutocompleteFilter alloc] init]; filter.locationBias = GMSPlaceCircularLocationOption(center, radius); GMSAutocompleteRequest *request = [[GMSAutocompleteRequest alloc] initWithQuery:@"Sicilian piz"]; request.sessionToken = token; request.filter = filter; [[GMSPlacesClient sharedClient] fetchAutocompleteSuggestionsFromRequest:request callback:^(NSArray<GMSAutocompleteSuggestion *> * results, NSError * error){ // Handle response for (GMSAutocompleteSuggestion *suggestion in results) { if (suggestion.placeSuggestion) { // Show place suggestion data. } } }];
Các hình thức sử dụng
Sử dụng tham số loại để hạn chế kết quả của một yêu cầu thuộc một loại nhất định như được liệt kê trong Bảng A và Bảng B. Bạn có thể chỉ định một mảng gồm tối đa 5 giá trị. Nếu bạn bỏ qua, tất cả các loại đều được trả về.
Ví dụ sau đây chỉ định một chuỗi truy vấn là "Soccer" (Bóng đá) và sử dụng tham số types để hạn chế kết quả ở những cơ sở thuộc loại "sporting_goods_store"
:
SDK Places Swift
let filter = AutocompleteFilter(types: [ PlaceType(rawValue: "sporting_goods_store") ]) let token = AutocompleteSessionToken() let autocompleteRequest = AutocompleteRequest(query: "Soccer", sessionToken: token, filter: filter) switch await placesClient.fetchAutocompleteSuggestions(with: autocompleteRequest) { case .success(let autocompleteSuggestions): for suggestion in autocompleteSuggestions { switch suggestion { case .place: // Show place suggestion data. } } case .failure(let placesError): // Handle error. }
Swift
let token = GMSAutocompleteSessionToken() let filter = GMSAutocompleteFilter() filter.types = ["sporting_goods_store"] let request = GMSAutocompleteRequest(query:"Soccer") request.filter = filter request.sessionToken = token GMSPlacesClient.shared().fetchAutocompleteSuggestions(from: request, callback: { ( results, error ) in if let error = error { print("Autocomplete error: \(error)") return } if let autocompleteResults = results { for result in autocompleteResults { print("Result \(String(describing: result.placeSuggestion?.placeID)) with \(String(describing: result.placeSuggestion?.attributedFullText))") } } })
Objective-C
GMSAutocompleteFilter *filter = [[GMSAutocompleteFilter alloc] init]; filter.types = @[ "sporting_goods_store" ]; GMSAutocompleteRequest *request = [[GMSAutocompleteRequest alloc] initWithQuery:@"Soccer"]; request.sessionToken = token; request.filter = filter; [[GMSPlacesClient sharedClient] fetchAutocompleteSuggestionsFromRequest:request callback:^(NSArray<GMSAutocompleteSuggestion *> * results, NSError * error){ // Handle response for (GMSAutocompleteSuggestion *suggestion in results) { if (suggestion.placeSuggestion) { // Show place suggestion data. } } }];
Sử dụng nguồn gốc
Khi bạn đưa tham số origin
vào yêu cầu, được chỉ định dưới dạng toạ độ vĩ độ và kinh độ, API sẽ bao gồm khoảng cách theo đường thẳng từ điểm xuất phát đến điểm đến trong phản hồi. Phản hồi trả về khoảng cách dưới dạng distanceMeters
.
Ví dụ này đặt gốc thành trung tâm của San Francisco:
SDK Places Swift
let filter = AutocompleteFilter(origin: CLLocation(latitude: 37.7749, longitude: -122.4194)) let token = AutocompleteSessionToken() let autocompleteRequest = AutocompleteRequest(query: "Amoeba", sessionToken: token, filter: filter) switch await placesClient.fetchAutocompleteSuggestions(with: autocompleteRequest) { case .success(let autocompleteSuggestions): for suggestion in autocompleteSuggestions { switch suggestion { case .place: // Show place suggestion data. } } case .failure(let placesError): // Handle error. }
Swift
let token = GMSAutocompleteSessionToken() let origin = CLLocation(latitude: 37.7749, longitude: -122.4194) let filter = GMSAutocompleteFilter() filter.origin = origin let request = GMSAutocompleteRequest(query:"Amoeba") request.filter = filter request.sessionToken = token GMSPlacesClient.shared().fetchAutocompleteSuggestions(from: request, callback: { ( results, error ) in if let error = error { print("Autocomplete error: \(error)") return } if let autocompleteResults = results { for result in autocompleteResults { print("Result \(String(describing: result.placeSuggestion?.placeID)) with \(String(describing: result.placeSuggestion?.attributedFullText)) and distance: \(String(describing: result.placeSuggestion?.distanceMeters))") } } })
Objective-C
GMSAutocompleteFilter *filter = [[GMSAutocompleteFilter alloc] init]; filter.origin = [[CLLocation alloc] initWithLatitude:37.395804 longitude:-122.077023]; GMSAutocompleteRequest *request = [[GMSAutocompleteRequest alloc] initWithQuery:@"Amoeba"]; request.sessionToken = token; request.filter = filter; [[GMSPlacesClient sharedClient] fetchAutocompleteSuggestionsFromRequest:request callback:^(NSArray<GMSAutocompleteSuggestion *> * results, NSError * error){ // Handle response for (GMSAutocompleteSuggestion *suggestion in results) { if (suggestion.placeSuggestion) { // Show place suggestion data. } } }];
Thêm tiện ích Tự động hoàn thành địa điểm
SDK Places Swift
struct PlaceAutocompleteDemoView: View { @State private var fetchedPlace: Place? @State private var placesError: PlacesError? @State private var showWidget = false public var body: some View { VStack { Button("Search for a place") { showWidget.toggle() } .placeAutocomplete( show: $showWidget, onSelection: { (autocompletePlaceSuggestion, autocompleteSessionToken) in Task { let placesClient = await PlacesClient.shared let fetchPlaceRequest = FetchPlaceRequest( placeID: autocompletePlaceSuggestion.placeID, placeProperties: [.displayName, .formattedAddress], sessionToken: autocompleteSessionToken ) switch await placesClient.fetchPlace(with: fetchPlaceRequest) { case .success(let place): print("Fetched place: \(place)") self.fetchedPlace = place case .failure(let placesError): print("Failed to fetch place: \(placesError)") self.placesError = placesError } } }, onError: { placesError in self.placesError = placesError } ) } } }
Phân bổ
Bạn có thể sử dụng tính năng Tự động hoàn thành (Mới) ngay cả khi không có bản đồ. Nếu bạn hiển thị bản đồ, thì đó phải là bản đồ của Google. Khi hiển thị các đề xuất từ dịch vụ Tự động hoàn thành (Mới) mà không có bản đồ, bạn phải đưa biểu trưng Google vào cùng dòng với trường/kết quả tìm kiếm. Để biết thêm thông tin, hãy xem phần Hiển thị biểu trưng Google và thông tin ghi công.