Tìm kiếm văn bản trả về thông tin về một nhóm địa điểm dựa trên một chuỗi. Ví dụ: "pizza ở New York", "cửa hàng giày gần Ottawa" hoặc "123 Main Street". Dịch vụ này sẽ phản hồi bằng một danh sách các địa điểm khớp với chuỗi văn bản và bất kỳ độ lệch vị trí đã đặt nào.
Dịch vụ này đặc biệt hữu ích khi tạo địa chỉ không rõ ràng truy vấn trong một hệ thống tự động. và các thành phần không có địa chỉ của chuỗi có thể khớp với doanh nghiệp cũng như của bạn. Ví dụ về truy vấn địa chỉ không rõ ràng là địa chỉ được định dạng kém hoặc yêu cầu có chứa các thành phần không có địa chỉ, chẳng hạn như tên doanh nghiệp. Các yêu cầu như hai ví dụ đầu tiên có thể trả về kết quả bằng 0 trừ khi vị trí (chẳng hạn như khu vực, giới hạn về vị trí hoặc sai lệch về vị trí) được đặt.
"10 High Street, Vương quốc Anh" hoặc "123 Main Street, Hoa Kỳ" | Nhiều "Đường cao tốc" ở Vương quốc Anh; nhiều "Phố chính" ở Hoa Kỳ. Truy vấn không trả về kết quả mong muốn trừ phi có quy định hạn chế về vị trí thiết lập. |
"Nhà hàng chuỗi New York" | Nhiều "Nhà hàng theo chuỗi" các địa điểm ở New York; không có địa chỉ đường phố hoặc thậm chí cả tên đường phố. |
"10 High Street, Escher UK" hoặc "123 Main Street, Pleasanton US" | Chỉ một "Đường thông cao" ở thành phố Escher của Vương quốc Anh; chỉ một "Phố Chính" ở thành phố Pleasanton CA của Hoa Kỳ. |
" UniqueRestaurantName New York" | Chỉ một cơ sở có tên này ở New York; không có địa chỉ đường phố cần thiết để phân biệt. |
"nhà hàng pizza ở New York" | Truy vấn này chứa giới hạn vị trí và "nhà hàng pizza" là một loại địa điểm được xác định rõ ràng. Hàm này trả về nhiều kết quả. |
"+1 514-670-8700" | Truy vấn này có chứa số điện thoại. Hàm này trả về nhiều kết quả cho địa điểm được liên kết với số điện thoại đó. |
Nhận danh sách địa điểm bằng cách tìm kiếm bằng văn bản
Thực hiện yêu cầu Tìm kiếm văn bản bằng cách gọi GMSPlacesClient
searchByTextWithRequest:
,
truyền một
GMSPlaceSearchByTextRequest
xác định các tham số yêu cầu và phương thức gọi lại, thuộc loại
GMSPlaceSearchByTextResultCallback
,
để xử lý phản hồi.
Đối tượng GMSPlaceSearchByTextRequest
chỉ định tất cả
Thông số bắt buộc và thông số 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
GMSPlace
, cũng như có tên là trường mặt nạ, như được xác định bởiGMSPlaceProperty
. 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. - Truy vấn văn bản.
Yêu cầu tìm kiếm văn bản mẫu này chỉ định rằng các đối tượng GMSPlace
phản hồi
chứa tên địa điểm và mã địa điểm cho từng đối tượng GMSPlace
trong tìm kiếm
kết quả. Hàm này cũng lọc câu trả lời để chỉ trả về các địa điểm thuộc loại
"nhà hàng".
Swift
// Create the GMSPlaceSearchByTextRequest object. let myProperties = [GMSPlaceProperty.name, GMSPlaceProperty.placeID].map {$0.rawValue} let request = GMSPlaceSearchByTextRequest(textQuery:"pizza in New York", placeProperties:myProperties) request.isOpenNow = true request.includedType = "restaurant" request.maxResultCount = 5 request.minRating = 3.5 request.rankPreference = .distance request.isStrictTypeFiltering = true request.locationBias = GMSPlaceCircularLocationOption(CLLocationCoordinate2DMake(40.7, -74.0), 200.0) // Array to hold the places in the response var placeResults: [GMSPlace] = [] let callback: GMSPlaceSearchByTextResultCallback = { [weak self] results, error in guard let self, error == nil else { if let error { print(error.localizedDescription) } return } guard let results = results as? [GMSPlace] else { return } placeResults = results } GMSPlacesClient.shared().searchByText(with: request, callback: callback)
Objective-C
// Create the GMSPlaceSearchByTextRequest object. GMSPlaceSearchByTextRequest *request = [[GMSPlaceSearchByTextRequest alloc] initWithTextQuery:@"pizza in New York" placeProperties:@[GMSPlacePropertyName, GMSPlacePropertyPlaceID]]; request.isOpenNow = YES; request.includedType = @"restaurant"; request.maxResultCount = 5; request.minRating = 3.5; request.rankPreference = GMSPlaceSearchByTextRankPreferenceDistance; request.isStrictTypeFiltering = YES; request.priceLevels = @[ @(kGMSPlacesPriceLevelFree), @(kGMSPlacesPriceLevelCheap) ]; request.locationBias = GMSPlaceCircularLocationOption(CLLocationCoordinate2DMake(40.7, -74.0), 200.0); // Array to hold the places in the response _placeResults = [NSArray array]; // Create the GMSPlaceSearchByTextRequest object. [_placesClient searchByTextWithRequest:request callback:^(NSArray<GMSPlace *> *_Nullable placeResults, NSError * _Nullable error) { if (error != nil) { NSLog(@"An error occurred %@", [error localizedDescription]); return; } else { if (placeResults.count > 0) { // Get list of places. _placeResults = placeResults; } } } ];
GooglePlacesSwift
let restriction = RectangularLocationRestriction( northEast: CLLocationCoordinate2D(latitude: 20, longitude: 30), southWest: CLLocationCoordinate2D(latitude: 40, longitude: 50) ) let searchByTextRequest = SearchByTextRequest( textQuery: "pizza in New York", placeProperties: [ .name, .placeID ], locationRestriction: restriction, includedType: .restaurant, maxResultCount: 5, minRating: 3.5, priceLevels: [ .moderate, .inexpensive ], isStrictTypeFiltering: true ) switch await placesClient.searchByText(with: searchByTextRequest) { case .success(let places): // Handle places case .failure(let placesError): // Handle error }
Câu trả lời trên tính năng Tìm kiếm bằng văn bản
Text Search API trả về một mảng kết quả khớp trong
hình thức
GMSPlace
với một đối tượng GMSPlace
cho mỗi vị trí phù hợp.
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:
-
isOpen
tính toán xem một địa điểm có mở cửa hay không tại thời điểm đã cho. 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 GMSPlaceSearchByTextRequest
để chỉ định bắt buộc
cho nội dung tìm kiếm.
-
Danh sách trường
Chỉ định những thuộc tính dữ liệu địa điểm cần trả về. Truyền danh sách
GMSPlace
các thuộc tính chỉ định trường dữ liệu cần trả về. Nếu bạn bỏ qua trường này mặt nạ, yêu cầu sẽ trả về lỗi.Danh sách trường là một phương pháp thiết kế hiệu quả để đảm bảo rằng bạn sẽ không yêu cầu dữ liệu không cần thiết, giúp tránh thời gian xử lý không cần thiết và các khoản phí thanh toán.
Chỉ định một hoặc nhiều trường sau:
Các trường sau đây kích hoạt SKU của Tìm kiếm văn bản (chỉ mã nhận dạng):
GMSPlacePropertyPlaceID
,GMSPlacePropertyName
Các trường sau đây kích hoạt SKU Tìm kiếm văn bản (Cơ bản):
GMSPlacePropertyAddressComponents
,GMSPlacePropertyBusinessStatus
,GMSPlacePropertyFormattedAddress
,GMSPlacePropertyIconBackgroundColor
,GMSPlacePropertyIconImageURL
,GMSPlacePropertyCoordinate
,GMSPlacePropertyPhotos
,GMSPlacePropertyPlusCode
,GMSPlacePropertyTypes
,GMSPlacePropertyUTCOffsetMinutes
,GMSPlacePropertyViewport
,GMSPlacePropertyWheelchairAccessibleEntrance
Các trường sau đây kích hoạt SKU Tìm kiếm văn bản (Nâng cao):
GMSPlacePropertyCurrentOpeningHours
,GMSPlacePropertySecondaryOpeningHours
,GMSPlacePropertyPhoneNumber
,GMSPlacePropertyPriceLevel
,GMSPlacePropertyRating
,GMSPlacePropertyOpeningHours
,GMSPlacePropertyUserRatingsTotal
,GMSPlacePropertyWebsite
Các trường sau đây kích hoạt SKU của Tìm kiếm văn bản (Ưu tiên):
GMSPlacePropertyCurbsidePickup
,GMSPlacePropertyDelivery
,GMSPlacePropertyDineIn
,GMSPlacePropertyEditorialSummary
,GMSPlacePropertyReservable
,GMSPlacePropertyReviews
,GMSPlacePropertyServesBeer
,GMSPlacePropertyServesBreakfast
,GMSPlacePropertyServesBrunch
,GMSPlacePropertyServesDinner
,GMSPlacePropertyServesLunch
,GMSPlacePropertyServesVegetarianFood
,GMSPlacePropertyServesWine
,GMSPlacePropertyTakeout
-
textQuery
Chuỗi văn bản cần tìm kiếm, ví dụ: "nhà hàng", "123 Số chính Đường phố" hoặc "địa điểm tốt nhất để ghé thăm ở San Francisco".
Thông số tùy chọn
Sử dụng đối tượng GMSPlaceSearchByTextRequest
để chỉ định thuộc tính không bắt buộc
cho nội dung tìm kiếm.
includedType
Giới hạn kết quả ở các địa điểm phù hợp với loại đã chỉ định theo Bảng A. Bạn chỉ có thể chỉ định một loại. Ví dụ:
request.includedType = "bar"
request.includedType = "pharmacy"
isOpenNow
Nếu
true
, chỉ trả lại những địa điểm đang mở cửa kinh doanh tại thời điểm gửi truy vấn. Nếu làfalse
, hãy trả lại tất cả doanh nghiệp bất kể trạng thái mở là gì. Những địa điểm không chỉ định giờ mở cửa trong cơ sở dữ liệu của Google Địa điểm được sẽ trả về nếu bạn đặt tham số này thànhfalse
.isStrictTypeFiltering
Được dùng với tham số
includeType
. Khi đặt thànhtrue
, chỉ những vị trí khớp với các loại đã chỉ định theo Trả vềincludeType
. Khi đặt là false, theo mặc định, câu trả lời có thể chứa những vị trí không khớp các loại được chỉ định.locationBias
Chỉ định một vùng để tìm kiếm. Vị trí này có nghĩa là có thể trả về kết quả quanh vị trí chỉ định, bao gồm kết quả bên ngoài khu vực được chỉ định.
Bạn có thể chỉ định
locationRestriction
hoặclocationBias
, nhưng không phải cả hai. Hãy xemlocationRestriction
khi chỉ định khu vực nơi có kết quả vàlocationBias
là chỉ định khu vực nơi kết quả phải ở gần nhưng có thể ở bên ngoài khu vực đó.Chỉ định khu vực dưới dạng Cửa sổ xem hình chữ nhật hoặc hình tròn.
Một đường tròn được xác định bởi 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,0 đến 50000,0. Bán kính mặc định là 0.0. Ví dụ:
request.locationBias = GMSPlaceCircularLocationOption(CLLocationCoordinate2DMake(40.7, -74.0), 200.0)
Hình chữ nhật là một khung nhìn vĩ độ – kinh độ, được biểu thị dưới dạng hai theo đường chéo đối diện với điểm cao và điểm thấp. Điểm thấp đánh dấu hướng tây nam góc của hình chữ nhật, và điểm cao nhất đại diện cho hướng đông bắc góc của hình chữ nhật.
Khung nhìn được xem là khu vực khép kín, nghĩa là khu vực này bao gồm 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 độ, bao gồm cả hai giá trị sau:
- Nếu
low
=high
, khung nhìn bao gồm điểm đó. - Nếu
low.longitude
>high.longitude
, phạm vi kinh độ bị đảo ngược (khung nhìn vượt qua 180 độ kinh độ). - Nếu
low.longitude
= -180 độ vàhigh.longitude
= 180 độ, khung nhìn bao gồm tất cả kinh độ. - Nếu
low.longitude
= 180 độ vàhigh.longitude
= -180 độ, phạm vi kinh độ là trống. - Nếu
low.latitude
>high.latitude
, phạm vi vĩ độ trống.
- Nếu
locationRestriction
Chỉ định một vùng để tìm kiếm. Kết quả nằm ngoài khu vực được chỉ định không bị trả lại. Chỉ định khu vực dưới dạng một Khung nhìn hình chữ nhật. Xem nội dung mô tả /
locationBias
để biết thông tin về cách xác định Khung nhìn.Bạn có thể chỉ định
locationRestriction
hoặclocationBias
, nhưng không phải cả hai. Hãy xemlocationRestriction
khi chỉ định khu vực nơi có kết quả vàlocationBias
là chỉ định khu vực nơi kết quả phải ở gần nhưng có thể ở bên ngoài khu vực đó.-
maxResultCount
Chỉ định số lượng kết quả địa điểm tối đa cần trả về. Giá trị phải nằm trong khoảng 1 và 20 (mặc định).
minRating
Chỉ cung cấp kết quả cho những người có điểm xếp hạng trung bình từ người dùng cao hơn hoặc bằng giới hạn này. Giá trị phải nằm trong khoảng từ 0 đến 5 (bao gồm) trong gia số 0,5. Ví dụ: bao gồm 0, 0.5, 1.0, ... , 5.0. Các giá trị là làm tròn lên đến 0,5 gần nhất. Ví dụ: giá trị 0, 6 loại bỏ tất cả kết quả có điểm xếp hạng dưới 1.0.
-
priceLevels
Hạn chế tìm kiếm ở những địa điểm được đánh dấu ở các mức giá nhất định. Lựa chọn mặc định là chọn tất cả các mức giá.
Chỉ định một mảng gồm một hoặc nhiều giá trị được xác định bởi
PriceLevel
.Ví dụ:
request.priceLevels = [GMSPlacesPriceLevel.moderate.rawValue, GMSPlacesPriceLevel.cheap.rawValue]
rankPreference
Chỉ định cách xếp hạng kết quả trong phản hồi dựa trên loại truy vấn:
- Đối với truy vấn theo danh mục, chẳng hạn như "Nhà hàng ở Thành phố New York",
.relevance
(xếp hạng kết quả theo mức độ liên quan với cụm từ tìm kiếm) là chế độ mặc định. Bạn có thể đặtrankPreference
thành.relevance
hoặc.distance
(xếp hạng kết quả theo khoảng cách). - Đối với truy vấn không theo danh mục, chẳng hạn như "Mountain View, CA", bạn nên
bạn không đặt
rankPreference
.
- Đối với truy vấn theo danh mục, chẳng hạn như "Nhà hàng ở Thành phố New York",
regionCode
Mã vùng dùng để định dạng phản hồi, được chỉ định làm mã CLDR gồm hai ký tự. Tham số này cũng có thể có hiệu ứng sai lệch trê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, mã quốc gia bị bỏ khỏi địa chỉ.
Hầu hết mã CLDR đều giống với mã ISO 3166-1, với một số 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à "Vương quốc Anh" (.co.uk) trong khi mã ISO 3166-1 của trang web là "gb" (về mặt kỹ thuật cho pháp nhân "Vương quốc Anh và Bắc Ireland"). Tuỳ theo luật hiện hành, thông số này có thể ảnh hưởng đến kết quả.
Hiển thị thuộc tính trong ứng dụng của bạn
Khi ứng dụng của bạn hiển thị thông tin thu được từ
GMSPlacesClient
!
chẳng hạn như ảnh và bài đánh giá, thì ứng dụng cũng phải cho thấy các thông tin ghi nhận sự đóng góp cần thiết.
Ví dụ: thuộc tính reviews
của đối tượng GMSPlacesClient
chứa một mảng tối đa năm
GMSPlaceReview
. Mỗi đối tượng GMSPlaceReview
có thể chứa thông tin ghi nhận sự đóng góp và thông tin ghi nhận tác giả.
Nếu hiển thị bài đánh giá trong ứng dụng của mình, thì bạn cũng phải hiển thị mọi thuộc tính hoặc tác giả
phân bổ giá trị đóng góp.
Để biết thêm thông tin, hãy xem tài liệu về phân bổ.