Tính năng Tự động hoàn thành (Mới) trả về các cụm từ dự đoán về địa điểm để phản hồi một yêu cầu bao gồm 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. Tính năng tự động hoàn thành 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. Ứng dụng của bạn có thể gửi các truy vấn khi người dùng nhập, để cung cấp thông tin dự đoán về địa điểm và truy vấn ngay lập tức.
Ví dụ: bạn gọi tính năng Tự động hoàn thành 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, "Sicilian piz", với khu vực tìm kiếm giới hạn ở San Francisco, California. Sau đó, phản hồi sẽ chứa một danh sách các đề 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 "Sicilian Pizza Kitchen". Các kết quả dự đoán địa điểm được trả về được thiết kế để trình bày cho người dùng nhằm hỗ trợ họ chọn địa điểm mong muốn. Bạn có thể đưa ra 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ỳ địa điểm dự đoán 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 2 cách 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 thông qua lớp
PlaceAutocomplete
. Lớp này sẽ hiển thị các cụm từ dự đoán 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: 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 Place Autocomplete
Để dễ dàng cung cấp trải nghiệm tự động hoàn thành nhất quán cho đị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 dự đoán về địa điểm cho người dùng trong khi trả về các đối tượng AutocompletePrediction
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ỳ dự đoán nào về địa điểm.
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 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 khi tạo ý định cho tiện ích bằng cách gọi setAutocompleteSessionToken()
. Nếu bạn không cung cấp mã thông báo phiên, tiện ích sẽ tạo một mã thông báo cho bạn. Bạn có thể truy cập vào mã thông báo này bằng cách gọi getSessionTokenFromIntent()
. Để 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.
Cách thêm tiện ích Tự động hoàn thành địa điểm vào ứng dụng:
(Không bắt buộc) Xác định mã thông báo phiên. 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 cho bạn.
Xác định một
autocompleteIntent
bằng các thông số mong muốn và mã thông báo phiên của bạn.Xác định
ActivityResultLauncher
choStartActivityForResult
. Trình khởi chạy này sẽ xử lý kết quả do hoạt động tự động hoàn thành trả về.Xử lý kết quả trong lệnh gọi lại của
ActivityResultLauncher
. Việc này bao gồm trích xuấtAutocompletePrediction
vàAutocompleteSessionToken
(nếu bạn chưa cung cấp), xử lý lỗi và tuỳ ý đưa ra yêu cầufetchPlace()
để nhận thêm thông tin chi tiết về một địa điểm.Khởi chạy ý định bằng cách dùng
placeAutocompleteActivityResultLauncher
Các mẫu sau đây minh hoạ cách thêm tiện ích Tự động hoàn thành địa điểm bằng cả Kotlin và Java:
Kotlin
// Provide the API key that has enabled "Places API (New)" in the Google Cloud Console. Places.initializeWithNewPlacesApiEnabled(/* Context= */ context, /* API Key= */ key) // Optional, create a session token for Autocomplete request and the followup FetchPlace request. val sessionToken: AutocompleteSessionToken = AutocompleteSessionToken.newInstance() val autocompleteIntent: Intent = PlaceAutocomplete.createIntent(this) { // ... provide input params for origin, countries, types filter ... setAutocompleteSessionToken(sessionToken) } val placeAutocompleteActivityResultLauncher: ActivityResultLauncher<Intent> = registerForActivityResult(ActivityResultContracts.StartActivityForResult()) { result: ActivityResult -> val intent = result.data if (intent != null && result.resultCode == PlaceAutocompleteActivity.RESULT_OK) { // get prediction object val prediction: AutocompletePrediction? = PlaceAutocomplete.getPredictionFromIntent(intent!!) // get session token val sessionToken: AutocompleteSessionToken? = PlaceAutocomplete.getSessionTokenFromIntent(intent!!) // create PlacesClient to make FetchPlace request (optional) val placesClient: PlacesClient = Places.createClient(this) val response = placesClient.awaitFetchPlace(prediction.placeId, Field.DISPLAY_NAME) { sessionToken = sessionToken // optional } } } // Launch Activity placeAutocompleteActivityResultLauncher.launch(autocompleteIntent)
Java
// Provide the API key that has enabled "Places API (New)" in the Google Cloud Console. Places.initializeWithNewPlacesApiEnabled(/* Context= */ context, /* API Key= */ key); // Optional, create a session token for Autocomplete request and the followup FetchPlace request AutocompleteSessionToken sessionToken = AutocompleteSessionToken.newInstance(); Intent autocompleteIntent = new PlaceAutocomplete.IntentBuilder() // ... set input params for origin, countries, types filter ... .setSessionToken(sessionToken) // optional .build(this); ActivityResultLauncher<Intent> placeAutocompleteActivityResultLauncher = registerForActivityResult( new ActivityResultContracts.StartActivityForResult(), new ActivityResultCallback<ActivityResult>() { @Override public void onActivityResult(ActivityResult result) { Intent intent = result.getData(); if (result.getResultCode() == PlaceAutocompleteActivity.RESULT_OK) { // get prediction object AutocompletePrediction prediction = PlaceAutocomplete.getPredictionFromIntent( Preconditions.checkNotNull(intent)); // get session token AutocompleteSessionToken sessionToken = PlaceAutocomplete.getSessionTokenFromIntent( Preconditions.checkNotNull(intent)); // create PlacesClient to make FetchPlace request (optional) PlacesClient placesClient = Places.createClient(this); FetchPlaceRequest request = FetchPlaceRequest.builder(prediction.getPlaceId(), Arrays.asList(Field.DISPLAY_NAME)) .setSessionToken(sessionToken).build(); Task<FetchPlaceResponse> task = placesClient.fetchPlace(request); } } } ); // Launch Activity placeAutocompleteActivityResultLauncher.launch(autocompleteIntent);
Nhận thông tin dự đoán về địa điểm theo cách có lập trình
Ứng dụng của bạn có thể nhận được danh sách tên và/hoặc địa chỉ được dự đoán của địa điểm từ API tự động hoàn thành bằng cách gọi PlacesClient.findAutocompletePredictions()
, truyền một đối tượng FindAutocompletePredictionsRequest
. Ví dụ dưới đây minh hoạ một lệnh gọi hoàn chỉnh đến PlacesClient.findAutocompletePredictions()
.
Places.initializeWithNewPlacesApiEnabled(context, apiKey); final List<Field> placeFields = getPlaceFields(); LatLng center = new LatLng(37.7749, -122.4194); CircularBounds circle = CircularBounds.newInstance(center, /* radius = */ 5000); final FindAutocompletePredictionsRequest autocompletePlacesRequest = FindAutocompletePredictionsRequest.builder() .setQuery("Sicilian piz") .setRegionCode("ES") .setLocationRestriction(circle) .build()); placesClient.findAutocompletePredictions(autoCompletePlacesRequest) .addOnSuccessListener( (response) -> { List<AutocompletePrediction> predictions = response.getResult().getAutocompletePredictions(); } ).addOnFailureListener( exception -> { Log.e(TAG, "some exception happened" + exception.getMessage()); }) );
Câu trả lời tự động hoàn thành (Mới)
API này trả về một FindAutocompletePredictionsResponse
trong Task
.
FindAutocompletePredictionsResponse
chứa danh sách tối đa 5 đối tượng AutocompletePrediction
đại diện cho những địa điểm được dự đoán. Danh sách có thể trống nếu không có địa điểm nào đã biết tương ứng với truy vấn và tiêu chí lọc.
Đối với mỗi địa điểm được dự đoán, bạn có thể gọi các phương thức sau để truy xuất thông tin chi tiết về địa điểm:
getFullText(CharacterStyle)
trả về toàn văn nội dung mô tả về một địa điểm. Đây là sự kết hợp giữa văn bản chính và văn bản phụ. Ví dụ: "Tháp Eiffel, Đại lộ Anatole France, Paris, Pháp". Ngoài ra, phương thức này cho phép bạn làm nổi bật các phần của nội dung mô tả khớp với nội dung tìm kiếm bằng kiểu mà bạn chọn, bằng cách sử dụngCharacterStyle
. Tham sốCharacterStyle
là không bắt buộc. Đặt giá trị này thành null nếu bạn không cần làm nổi bật.getPrimaryText(CharacterStyle)
trả về văn bản chính mô tả một địa điểm. Đây thường là tên của địa điểm. Ví dụ: "Tháp Eiffel" và "123 Pitt Street".getSecondaryText(CharacterStyle)
trả về văn bản phụ của nội dung mô tả về một địa điểm. Ví dụ: điều này hữu ích khi bạn dùng làm dòng thứ hai khi hiển thị các cụm từ dự đoán tự động hoàn thành. Ví dụ: "Avenue Anatole France, Paris, Pháp" và "Sydney, New South Wales".getPlaceId()
trả về mã địa điểm của địa điểm được dự đoán. Mã địa điểm là một giá trị nhận dạng bằng văn bản xác định duy nhất một địa điểm. Bạn có thể dùng mã này để truy xuất lại đối tượngPlace
sau này. Để biết thêm thông tin về mã địa điểm trong tính năng Tự động hoàn thành, hãy xem phần Thông tin chi tiết về địa điểm (Mới). Để biết thông tin chung về mã địa điểm, hãy xem Tổng quan về mã địa điểm.getTypes()
trả về danh sách các loại địa điểm được liên kết với địa điểm này.getDistanceMeters()
trả về khoảng cách theo đường thẳng (tính bằng mét) giữa địa điểm này và điểm xuất phát được chỉ định trong yêu cầu.
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ã địa chỉ. Dịch vụ Autocomplete (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.
Để đặt tham số truy vấn, hãy gọi phương thức
setQuery()
khi tạo đối tượngFindAutocompletePredictionsRequest
.
Thông số tùy chọn
-
Các loại chính
Một danh sách gồm tối đa 5 giá trị loại từ các loại Bảng A hoặc Bảng B dùng để lọc những địa điểm được trả về trong phản hồi. 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ó trong phản hồi.
Một địa điểm chỉ có thể có một loại chính trong số các loại trong 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"
.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.
Để đặt tham số loại chính, hãy gọi phương thức
setTypesFilter()
khi tạo đối tượngFindAutocompletePredictionsRequest
. -
Quốc gia
Chỉ bao gồm kết quả từ danh sách các quốc gia được chỉ định, được chỉ định dưới dạng danh sách 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 các khu vực ở Đức và Pháp:
Nếu bạn chỉ định cả
locationRestriction
vàincludedRegionCodes
, thì kết quả sẽ nằm trong khu vực giao nhau của hai chế độ cài đặt.Để đặt tham số quốc gia, hãy gọi phương thức
setCountries()
khi tạo đối tượngFindAutocompletePredictionsRequest
. -
Độ lệch đầu vào
Độ lệch ký tự Unicode dựa trên mốc 0 cho biết vị trí con trỏ trong cụm từ tìm kiếm. 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 truy vấn.
Để đặt tham số độ lệch đầu vào, hãy gọi phương thức
setInputOffset()
khi tạo đối tượngFindAutocompletePredictionsRequest
. Thiên kiến về vị trí hoặc hạn chế về vị trí
Bạn có thể chỉ định độ lệch vị trí hoặc hạn chế vị trí (nhưng không được chỉ định cả hai) để xác định khu vực tìm kiếm. Hãy coi hạn chế về vị trí là việc chỉ định khu vực mà kết quả phải nằm trong đó, còn thiên kiến về vị trí là việc chỉ định khu vực mà kết quả phải ở gần đó. Điểm khác biệt chính là với thiên kiến về vị trí, kết quả bên ngoài khu vực được chỉ định vẫn có thể được trả về.
Thiên kiến về vị trí
Chỉ định một khu vực để tìm kiếm. Vị trí này đóng vai trò là một điểm thiên vị, chứ không phải là một hạn chế, vì vậy, kết quả bên ngoài khu vực được chỉ định vẫn có thể được trả về.
Để đặt tham số thiên vị về vị trí, hãy gọi phương thức
setLocationBias()
khi tạo đối tượngFindAutocompletePredictionsRequest
.Hạn chế về vị trí
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ề.
Để đặt tham số hạn chế vị trí, hãy gọi phương thức
setLocationRestriction()
khi tạo đối tượngFindAutocompletePredictionsRequest
.
Chỉ định độ lệch vị trí hoặc khu vực hạn chế vị trí dưới dạng một Viewport hình chữ nhật hoặc dưới dạng một 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 hạn chế về vị trí, 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.
Hình chữ nhật là một khung nhìn 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ì dải kinh độ sẽ bị đảo ngược (khung nhìn 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 không được để trống hộp được biểu thị. Khung hiển thị trống sẽ gây ra lỗi.- Nếu
-
Điểm gốc
Điểm xuất phát để tính khoảng cách theo đường thẳng đến đích đến (truy cập bằng
getDistanceMeters()
). Nếu bạn bỏ qua giá trị này, khoảng cách theo đường thẳng sẽ không được trả về. Phải được chỉ định dưới dạng toạ độ vĩ độ và kinh độ:Để đặt tham số nguồn, hãy gọi phương thức
setOrigin()
khi tạo đối tượngFindAutocompletePredictionsRequest
. -
Mã vùng
Mã khu vực dùng để định dạng phản hồi, bao gồm cả định dạng địa chỉ, được chỉ định dưới dạng 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.Để đặt tham số mã khu vực, hãy gọi phương thức
setRegionCode()
khi tạo đối tượngFindAutocompletePredictionsRequest
. -
Mã thông báo phiên
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 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. Phiên bắt đầu khi người dùng bắt đầu nhập một cụm từ tìm kiếm và kết thúc khi họ chọn một địa điểm. Mỗi phiên có thể có nhiều truy vấn, theo sau là một lựa chọn về địa điểm. Sau khi một phiên kết thúc, mã thông báo sẽ không còn hợp lệ nữa; ứng dụng của bạn phải tạo một mã thông báo mới cho mỗi phiên. Bạn nên sử dụng mã thông báo phiên cho tất cả các phiên tự động hoàn thành có lập trình (khi bạn nhúng một mảnh hoặc chạy tính năng tự động hoàn thành bằng một ý định, API sẽ tự động xử lý việc này).
Tính năng Tự động hoàn thành sử dụng
AutocompleteSessionToken
để xác định từng phiên. Ứng dụng của bạn phải truyền một mã thông báo phiên mới khi bắt đầu mỗi phiên mới, sau đó truyền cùng mã thông báo đó, cùng với một Mã địa điểm, trong lệnh gọi tiếp theo đếnfetchPlace()
để truy xuất Thông tin chi tiết về địa điểm cho địa điểm mà người dùng đã chọn.Để đặt tham số mã thông báo phiên, hãy gọi phương thức
setSessionToken()
khi tạo đối tượngFindAutocompletePredictionsRequest
.Để biết thêm thông tin, hãy xem phần Mã thông báo phiên.
Ví dụ về tính năng Tự động hoàn thành (Mới)
Sử dụng hạn chế vị trí và thiên kiến vị trí
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ể sử dụng hạn chế về vị trí hoặc thiên vị về vị trí (không bắt buộc) nhưng không được dùng cả hai để 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.initializeWithNewPlacesApiEnabled(context, apiKey); final List<Field> placeFields = getPlaceFields(); LatLng center = new LatLng(37.7749, -122.4194); CircularBounds circle = CircularBounds.newInstance(center, /* radius = */ 5000); final FindAutocompletePredictionsRequest autocompletePlacesRequest = FindAutocompletePredictionsRequest.builder() .setQuery("Amoeba") .setLocationRestriction(circle) .build()); placesClient.findAutocompletePredictions(autoCompletePlacesRequest) .addOnSuccessListener( (response) -> { List<AutocompletePrediction> predictions = response.getResult().getAutocompletePredictions(); } ).addOnFailureListener( exception -> { Log.e(TAG, "some exception happened" + exception.getMessage()); }) );
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.initializeWithNewPlacesApiEnabled(context, apiKey); final List<Field> placeFields = getPlaceFields(); LatLng center = new LatLng(37.7749, -122.4194); CircularBounds circle = CircularBounds.newInstance(center, /* radius = */ 5000); final FindAutocompletePredictionsRequest autocompletePlacesRequest = FindAutocompletePredictionsRequest.builder() .setQuery("Amoeba") .setLocationBias(circle) .build()); placesClient.findAutocompletePredictions(autoCompletePlacesRequest) .addOnSuccessListener( (response) -> { List<AutocompletePrediction> predictions = response.getResult().getAutocompletePredictions(); } ).addOnFailureListener( exception -> { Log.e(TAG, "some exception happened" + exception.getMessage()); }) );
Sử dụng các loại chính
Sử dụng tham số primary types để hạn chế kết quả từ 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ố primarytypes để giới hạn kết quả ở những cơ sở thuộc loại "sporting_goods_store"
:
Places.initializeWithNewPlacesApiEnabled(context, apiKey); final List<Field> placeFields = getPlaceFields(); final List<Place.Field> primaryTypes = Arrays.asList("sporting_goods_store"); LatLng center = new LatLng(37.7749, -122.4194); CircularBounds circle = CircularBounds.newInstance(center, /* radius = */ 5000); final FindAutocompletePredictionsRequest autocompletePlacesRequest = FindAutocompletePredictionsRequest.builder() .setQuery("Soccer") .setIncludedPrimaryTypes(primaryTypes) .setLocationBias(circle) .build()); placesClient.findAutocompletePredictions(autoCompletePlacesRequest) .addOnSuccessListener( (response) -> { List<AutocompletePrediction> predictions = response.getResult().getAutocompletePredictions(); } ).addOnFailureListener( exception -> { Log.e(TAG, "some exception happened" + exception.getMessage()); }) );
Nếu bạn bỏ qua tham số loại chính, kết quả có thể bao gồm những cơ sở thuộc loại mà bạn không muốn, chẳng hạn như "athletic_field"
.
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 đường thẳng từ điểm xuất phát đến điểm đến vào phản hồi (được truy cập bằng getDistanceMeters()
). Ví dụ này đặt điểm xuất phát ở trung tâm San Francisco:
Places.initializeWithNewPlacesApiEnabled(context, apiKey); final List<Field> placeFields = getPlaceFields(); LatLng center = new LatLng(37.7749, -122.4194); CircularBounds circle = CircularBounds.newInstance(center, /* radius = */ 5000); final FindAutocompletePredictionsRequest autocompletePlacesRequest = FindAutocompletePredictionsRequest.builder() .setQuery("Amoeba") .setOrigin(center) .setLocationRestriction(circle) .build()); placesClient.findAutocompletePredictions(autoCompletePlacesRequest) .addOnSuccessListener( (response) -> { List<AutocompletePrediction> predictions = response.getResult().getAutocompletePredictions(); } ).addOnFailureListener( exception -> { Log.e(TAG, "some exception happened" + exception.getMessage()); }) );