Dịch vụ Autocomplete (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à ranh giới đị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 với toàn bộ từ 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 các đề xuất về địa điểm ngay lập tức.
Đề xuất về địa điểm là những địa điểm (chẳng hạn như doanh nghiệp, địa chỉ và địa điểm yêu thích) dựa trên chuỗi văn bản đầu vào và khu vực tìm kiếm được chỉ định.
Ví dụ: bạn gọi API bằng cách sử dụng làm đầu vào một chuỗi chứa một phần thông tin đầ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 về địa điểm phù hợ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ế để trình bày cho người dùng để họ có thể chọn địa điểm mong muốn. Bạn có thể đưa ra yêu cầu Place Details (New) để biết thêm thông tin về bất kỳ đề xuất nào về địa điểm đượ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 2 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ìm kiếm tự động hoàn thành sẵn sàng sử dụng, hiển thị các cụm từ gợi ý khi người dùng nhập.
Nhận thông tin dự đoán về địa điểm theo cách có lập trình
Yêu cầu Tự động hoàn thành (Mới)
Tạo một 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 của tính năng Tự động hoàn thành trong một đối tượng GMSAutocompletePlaceSuggestion
.
Bạn phải có khoá API và các 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 Places Swift SDK
Tạo một 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 của tính năng Tự động hoàn thành trong một đố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.
Places Swift SDK
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ừ điểm bắt đầu.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 mà bạn muốn tìm kiếm. Chỉ định toàn bộ từ và chuỗi con, 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 đề xuất 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 mà người dùng cảm nhận được.
Thông số tùy chọn
sessionToken
Mã thông báo phiên là 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 chương 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 cụm 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 tham 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 duy nhất 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 tham 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ả chỉ 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ó thể đư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:
- Bạn chỉ định nhiều hơn 5 loại.
- Mọi loại không nhận dạng được đề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
:
Places Swift SDK
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ả trong 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ị ccTLD ("miền cấp cao nhất") gồm 2 ký tự. Nếu bạn bỏ qua tham số này, thì sẽ không có quy tắc hạn chế nào được áp dụng cho phản hồi. Ví dụ: để giới hạn khu vực ở Đức và Pháp:
Places Swift SDK
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
Độ lệch ký tự Unicode dựa trên mốc 0 cho biết vị trí con trỏ trong input
. Vị trí con trỏ có thể ảnh hưởng đến những nội dung dự đoán được trả về. Nếu trống, giá trị này sẽ mặc định là độ dài của input
.
locationBias hoặc locationRestriction
Bạn có thể chỉ định locationBias
hoặc locationRestriction
(chỉ 1 trong 2 cột này) để xác định khu vực tìm kiếm. Hãy coi locationRestriction
là việc chỉ định khu vực mà kết quả phải nằm trong, còn locationBias
là việc 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à một thiên kiến, tức là kết quả xung quanh vị trí đã chỉ định có thể được trả về, 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. Kết quả bên ngoài khu vực được chỉ định sẽ không được trả về.
Chỉ định vùng locationBias
hoặc locationRestriction
dưới dạng một khung hiển thị hình chữ nhật hoặc hình tròn.
Một hình 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 50.000. 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ụ:
Places Swift SDK
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à một khung hiển thị vĩ độ và kinh độ, được biểu thị dưới dạng hai điểm low
và high
đối diện theo đường chéo. Khung nhìn được coi là một vùng khép kín, tức là bao gồm cả ranh giới của vùng đó. Phạm vi vĩ độ phải nằm trong khoảng từ -90 đến 90 độ (bao gồm cả hai giá trị này), còn phạm vi kinh độ phải nằm trong khoảng từ -180 đến 180 độ (bao gồm cả hai giá trị này):
- Nếu
low
=high
, khung nhìn sẽ bao gồm điểm duy nhất đó. - Nếu
low.longitude
>high.longitude
, thì phạm vi kinh độ sẽ bị đảo ngược (khung hiển thị vượt qua đường kinh độ 180 độ). - Nếu
low.longitude
= -180 độ vàhigh.longitude
= 180 độ, thì khung hiển thị sẽ bao gồm tất cả kinh độ. - Nếu
low.longitude
= 180 độ vàhigh.longitude
= -180 độ, thì dải kinh độ sẽ trống.
Bạn phải điền sẵn dữ liệu cho cả low
và high
, đồng thời hộp được biểu thị không được trống. Khung hiển thị trống sẽ gây ra lỗi.
Ví dụ: khung hiển thị này bao trọn Thành phố New York:
Places Swift SDK
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 xuất phát để tính khoảng cách đường thẳng đến đích đến (trả về dưới dạng distanceMeters
). Nếu bạn bỏ qua giá trị này, khoảng cách đường thẳng sẽ không được trả về. Phải được chỉ định dưới dạng toạ độ vĩ độ và kinh độ:
Places Swift SDK
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 là giá trị gồm 2 ký tự ccTLD ("miền cấp cao nhất"). Hầu hết mã ccTLD đề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 của quốc gia này 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
. Tham 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 chỉ cung cấp dịch vụ tại cơ sở khách hàng là 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ỉ doanh nghiệp.
Ví dụ:
Places Swift SDK
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 nhất quán về tính năng tự động hoàn thành địa điểm, bạn có thể thêm tiện ích Tự động hoàn thành địa điểm vào ứng dụng của mình. Tiện ích này cung cấp một giao diện chuyên dụng, toàn màn hình, xử lý thông tin đầu vào của người dùng và hiển thị các địa điểm dự đoán cho người dùng trong khi trả về các đối tượng AutocompletePlaceSuggestion
cho ứng dụng. Sau đó, bạn có thể đưa ra yêu cầu Chi tiết về địa điểm (Mới) để nhận thêm thông tin về bất kỳ địa điểm dự đoán nào.
Tương tự như khi lấy thông tin dự đoán về địa điểm theo phương thức lập trình, tiện ích Place Autocomplete 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, thì 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 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 chế độ xem toàn màn hình để 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, chẳng hạn như doanh nghiệp, địa chỉ và địa đ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 khung hiển thị toàn màn hình.
Các thông số của tiện ích Place Autocomplete
Ngoài các tham số có sẵn theo phương thức 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ó được hiển thị hay không.
AutocompleteUICustomization
Các tham số AutocompleteUICustomization
chỉ định các chế độ tuỳ chỉnh giao diện người dùng sẽ áp dụng cho tiện ích. Các lựa chọn tuỳ chỉnh bao gồm:
AutocompleteListDensity
. Tham số này cho phép bạn chọn mật độ của danh sách đề xuất, có thể làmultiLine
hoặctwoLine
.AutocompleteUIIcon
. Tham số này cho phép bạn chọn có hiển thị biểu tượng mặc định cho từng mục trong danh sách hay không.
onSelection
Đóng để chạy khi một vị trí được chọn.
onError
Đó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 tính năng thiên vị theo IP, API sẽ sử dụng địa chỉ IP của thiết bị để thiên vị kết quả. Bạn có thể tuỳ ý sử dụng locationRestriction
hoặc locationBias
(chỉ 1 trong 2) để chỉ định một khu vực tìm kiếm.
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ả bên ngoài khu vực được chỉ định. Ví dụ sau đây sử dụng chế độ hạn chế vị trí để giới hạn yêu cầu đối với chế độ hạn chế vị trí hình tròn có bán kính 5.000 mét, tập trung vào San Francisco:
Places Swift SDK
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 thiên kiến về vị trí, vị trí đóng vai trò là một thiên kiến, tức là kết quả xung quanh vị trí được chỉ định có thể được trả về, bao gồm cả kết quả bên ngoài khu vực được chỉ định. Ví dụ tiếp theo sẽ thay đổi yêu cầu trước đó để sử dụng thiên kiến vị trí:
Places Swift SDK
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ố types để 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 có tối đa 5 giá trị. Nếu bạn bỏ qua tham số này, tất cả các loại sẽ được trả về.
Ví dụ sau đây chỉ định một chuỗi truy vấn là "Bóng đá" và sử dụng tham số types để hạn chế kết quả đối với các cơ sở thuộc loại "sporting_goods_store"
:
Places Swift SDK
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
Khi bạn thêm tham số origin
vào yêu cầu (được chỉ định là toạ độ vĩ độ và kinh độ), API sẽ thêm khoảng cách theo đường thẳng từ điểm xuất phát đến điểm đến vào phản hồi. Phản hồi trả về khoảng cách dưới dạng distanceMeters
.
Ví dụ này đặt điểm gốc ở trung tâm San Francisco:
Places Swift SDK
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
Places Swift SDK
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 } ) } } }