Bạn có thể dùng tính năng Tự động hoàn thành cụm từ tìm kiếm (Phiên bản cũ) để cung cấp cụm từ dự đoán cho các cụm từ tìm kiếm địa lý dựa trên văn bản, bằng cách trả về các cụm từ tìm kiếm được đề xuất khi bạn nhập.
Yêu cầu Tự động hoàn thành cụm từ tìm kiếm (Phiên bản cũ)
Tính năng Tự động hoàn thành cụm từ tìm kiếm (cũ) là một phần của Places API (cũ) và dùng chung khoá API cũng như hạn mức với Places API (cũ).
Tính năng Tự động hoàn thành cụm từ tìm kiếm (Phiên bản cũ) cho phép bạn thêm các cụm từ gợi ý tìm kiếm theo địa lý ngay lập tức vào ứng dụng của mình. Thay vì tìm kiếm một vị trí cụ thể, người dùng có thể nhập một cụm từ tìm kiếm theo danh mục, chẳng hạn như "pizza gần New York" và dịch vụ sẽ phản hồi bằng một danh sách các cụm từ tìm kiếm được đề xuất khớp với chuỗi đó. Vì tính năng Tự động hoàn thành cụm từ tìm kiếm (Phiên bản cũ) có thể so khớp cả từ đầy đủ và chuỗi con, nên các ứng dụng có thể gửi cụm từ tìm kiếm khi người dùng nhập để cung cấp thông tin dự đoán tức thì.
Yêu cầu Query Autocomplete (Cũ) là một URL loại HTTP có dạng như sau:
https://maps.googleapis.com/maps/api/place/queryautocomplete/output?parameters
trong đó output có thể là json hoặc xml.
Bạn phải có một số thông số nhất định để bắt đầu yêu cầu Tự động hoàn thành cụm từ tìm kiếm (Phiên bản cũ).
Theo tiêu chuẩn trong URL, tất cả các tham số đều được phân tách bằng ký tự dấu và (&). Danh sách các thông số và giá trị có thể của các thông số đó được liệt kê dưới đây.
Thông số bắt buộc
-
input
Chuỗi văn bản mà bạn muốn tìm kiếm. Dịch vụ Place Autocomplete sẽ 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
-
language
Ngôn ngữ mà bạn muốn nhận kết quả.
- Xem danh sách các ngôn ngữ được hỗ trợ. Google thường xuyên cập nhật các ngôn ngữ được hỗ trợ, vì vậy, danh sách này có thể chưa đầy đủ.
-
Nếu bạn không cung cấp
language, API sẽ cố gắng sử dụng ngôn ngữ ưu tiên như được chỉ định trong tiêu đềAccept-Language. - API này cố gắng cung cấp một địa chỉ đường phố mà cả người dùng và người dân địa phương đều có thể đọc được. Để đạt được mục tiêu đó, phương thức này sẽ trả về địa chỉ đường phố bằng ngôn ngữ địa phương, được chuyển tự sang một kịch bản mà người dùng có thể đọc được (nếu cần), tuân theo ngôn ngữ ưu tiên. Tất cả các địa chỉ khác đều được trả về bằng ngôn ngữ ưu tiên. Tất cả các thành phần địa chỉ đều được trả về bằng cùng một ngôn ngữ, được chọn từ thành phần đầu tiên.
- Nếu không có tên bằng ngôn ngữ ưu tiên, API sẽ sử dụng kết quả trùng khớp gần nhất.
- Ngôn ngữ ưu tiên có ảnh hưởng nhỏ đến tập hợp kết quả mà API chọn trả về và thứ tự trả về. Trình mã hoá địa lý diễn giải các từ viết tắt theo nhiều cách tuỳ thuộc vào ngôn ngữ, chẳng hạn như từ viết tắt cho các loại đường phố hoặc từ đồng nghĩa có thể hợp lệ trong một ngôn ngữ nhưng không hợp lệ trong ngôn ngữ khác. Ví dụ: utca và tér là từ đồng nghĩa với đường phố trong tiếng Hungary.
-
vị trí
Xác định một điểm, dưới dạng toạ độ
latitude,longitude, xung quanh điểm đó để tìm kiếm. Dịch vụ Places sử dụng vị trí để điều chỉnh kết quả tìm kiếm, ưu tiên hiển thị kết quả trong khu vực dolocationvàradiusxác định; kết quả bên ngoài khu vực đã xác định vẫn có thể xuất hiện.Tham sốlocationcó thể bị ghi đè nếuquerychứa một vị trí rõ ràng, chẳng hạn nhưMarket in Barcelona. Việc sử dụng dấu ngoặc kép xung quanh cụm từ tìm kiếm cũng có thể ảnh hưởng đến trọng số được gán cholocationvàradius. -
độ lệch
Vị trí của ký tự cuối cùng mà dịch vụ dùng để so khớp các cụm từ gợi ý trong cụm từ tìm kiếm. Ví dụ: nếu đầu vào là
Googlevà độ lệch là 3, thì dịch vụ sẽ khớp vớiGoo. Chuỗi do độ lệch xác định chỉ được so khớp với từ đầu tiên trong cụm từ đầu vào. Ví dụ: nếu từ khoá đầu vào làGoogle abcvà độ lệch là 3, thì dịch vụ sẽ cố gắng so khớp vớiGoo abc. Nếu không có độ lệch nào được cung cấp, dịch vụ sẽ sử dụng toàn bộ cụm từ. Khoảng bù thường được đặt ở vị trí của dấu nháy văn bản. -
bán kính
Xác định khoảng cách (tính bằng mét) để trả về kết quả về địa điểm. Bạn có thể điều chỉnh kết quả theo một vòng tròn cụ thể bằng cách truyền tham số
locationvàradius. Khi đó, dịch vụ Places sẽ ưu tiên hiển thị kết quả trong vòng tròn đó; kết quả bên ngoài khu vực đã xác định vẫn có thể xuất hiện.Bán kính sẽ tự động được giới hạn ở giá trị tối đa tuỳ thuộc vào loại tìm kiếm và các thông số khác.
- Tự động hoàn thành: 50.000 mét
-
Tìm kiếm lân cận:
- có
keywordhoặcname: 50.000 mét -
không có
keywordhoặcname-
Tối đa 50.000 mét, được điều chỉnh linh hoạt dựa trên mật độ khu vực, không phụ thuộc vào tham số
rankby. -
Khi sử dụng
rankby=distance, tham số bán kính sẽ không được chấp nhận và sẽ dẫn đếnINVALID_REQUEST.
-
Tối đa 50.000 mét, được điều chỉnh linh hoạt dựa trên mật độ khu vực, không phụ thuộc vào tham số
- có
- Tự động hoàn thành cụm từ tìm kiếm: 50.000 mét
- Tìm kiếm văn bản: 50.000 mét
Ví dụ về tính năng Tự động hoàn thành truy vấn (Phiên bản cũ)
URL
https://maps.googleapis.com/maps/api/place/queryautocomplete/json ?input=pizza%20near%20par &key=YOUR_API_KEY
curl
curl -L -X GET 'https://maps.googleapis.com/maps/api/place/queryautocomplete/json?input=pizza%20near%20par&key=YOUR_API_KEY'Yêu cầu "Pizza near Par" (Pizza gần Par), với kết quả bằng tiếng Pháp:
URL
https://maps.googleapis.com/maps/api/place/queryautocomplete/json ?input=pizza%20near%20par &language=fr &key=YOUR_API_KEY
curl
curl -L -X GET 'https://maps.googleapis.com/maps/api/place/queryautocomplete/json?input=pizza%20near%20par&language=fr&key=YOUR_API_KEY'Xin lưu ý rằng bạn cần thay thế khoá API trong các ví dụ này bằng khoá của riêng bạn.
Phản hồi của tính năng Tự động hoàn thành cụm từ tìm kiếm (Phiên bản cũ)
Phản hồi của tính năng Tự động hoàn thành truy vấn (Phiên bản cũ) được trả về theo định dạng do cờ output chỉ ra trong đường dẫn của yêu cầu URL. Kết quả bên dưới được trả về cho một truy vấn có các tham số sau:
URL
https://maps.googleapis.com/maps/api/place/queryautocomplete/json ?input=pizza%20near%20par &key=YOUR_API_KEY
curl
curl -L -X GET 'https://maps.googleapis.com/maps/api/place/queryautocomplete/json?input=pizza%20near%20par&key=YOUR_API_KEY'JSON
{ "predictions": [ { "description": "pizza near Paris, France", "matched_substrings": [{ "length": 5, "offset": 0 }, { "length": 3, "offset": 11 }], "structured_formatting": { "main_text": "pizza", "main_text_matched_substrings": [{ "length": 5, "offset": 0 }], "secondary_text": "near Paris, France", "secondary_text_matched_substrings": [{ "length": 3, "offset": 5 }], }, "terms": [ { "offset": 0, "value": "pizza" }, { "offset": 6, "value": "near" }, { "offset": 11, "value": "Paris" }, { "offset": 18, "value": "France" }, ], }, { "description": "pizza near Pari Chowk, NRI City, Omega II, Noida, Uttar Pradesh, India", "matched_substrings": [{ "length": 5, "offset": 0 }, { "length": 3, "offset": 11 }], "structured_formatting": { "main_text": "pizza", "main_text_matched_substrings": [{ "length": 5, "offset": 0 }], "secondary_text": "near Pari Chowk, NRI City, Omega II, Noida, Uttar Pradesh, India", "secondary_text_matched_substrings": [{ "length": 3, "offset": 5 }], }, "terms": [ { "offset": 0, "value": "pizza" }, { "offset": 6, "value": "near" }, { "offset": 11, "value": "Pari Chowk" }, { "offset": 23, "value": "NRI City" }, { "offset": 33, "value": "Omega II" }, { "offset": 43, "value": "Noida" }, { "offset": 50, "value": "Uttar Pradesh" }, { "offset": 65, "value": "India" }, ], }, { "description": "pizza near Disneyland Park, Disneyland Drive, Anaheim, CA, USA", "matched_substrings": [{ "length": 5, "offset": 0 }, { "length": 3, "offset": 22 }], "structured_formatting": { "main_text": "pizza", "main_text_matched_substrings": [{ "length": 5, "offset": 0 }], "secondary_text": "near Disneyland Park, Disneyland Drive, Anaheim, CA, USA", "secondary_text_matched_substrings": [{ "length": 3, "offset": 16 }], }, "terms": [ { "offset": 0, "value": "pizza" }, { "offset": 6, "value": "near" }, { "offset": 11, "value": "Disneyland Park" }, { "offset": 28, "value": "Disneyland Drive" }, { "offset": 46, "value": "Anaheim" }, { "offset": 55, "value": "CA" }, { "offset": 59, "value": "USA" }, ], }, { "description": "pizza near Cathédrale Notre-Dame de Paris, Parvis Notre-Dame - place Jean-Paul-II, Paris, France", "matched_substrings": [{ "length": 5, "offset": 0 }, { "length": 3, "offset": 36 }], "structured_formatting": { "main_text": "pizza", "main_text_matched_substrings": [{ "length": 5, "offset": 0 }], "secondary_text": "near Cathédrale Notre-Dame de Paris, Parvis Notre-Dame - place Jean-Paul-II, Paris, France", "secondary_text_matched_substrings": [{ "length": 3, "offset": 30 }], }, "terms": [ { "offset": 0, "value": "pizza" }, { "offset": 6, "value": "near" }, { "offset": 11, "value": "Cathédrale Notre-Dame de Paris" }, { "offset": 43, "value": "Parvis Notre-Dame - place Jean-Paul-II" }, { "offset": 83, "value": "Paris" }, { "offset": 90, "value": "France" }, ], }, { "description": "pizza near Paris Beauvais Airport, Route de l'Aéroport, Tillé, France", "matched_substrings": [{ "length": 5, "offset": 0 }, { "length": 3, "offset": 11 }], "structured_formatting": { "main_text": "pizza", "main_text_matched_substrings": [{ "length": 5, "offset": 0 }], "secondary_text": "near Paris Beauvais Airport, Route de l'Aéroport, Tillé, France", "secondary_text_matched_substrings": [{ "length": 3, "offset": 5 }], }, "terms": [ { "offset": 0, "value": "pizza" }, { "offset": 6, "value": "near" }, { "offset": 11, "value": "Paris Beauvais Airport" }, { "offset": 35, "value": "Route de l'Aéroport" }, { "offset": 56, "value": "Tillé" }, { "offset": 63, "value": "France" }, ], }, ], "status": "OK", }
XML
<AutocompletionResponse> <status>OK</status> <prediction> <description>pizza near Paris, France</description> <term> <value>pizza</value> <offset>0</offset> </term> <term> <value>near</value> <offset>6</offset> </term> <term> <value>Paris</value> <offset>11</offset> </term> <term> <value>France</value> <offset>18</offset> </term> <matched_substring> <offset>0</offset> <length>5</length> </matched_substring> <matched_substring> <offset>11</offset> <length>3</length> </matched_substring> <structured_formatting> <description>pizza</description> <subdescription>near Paris, France</subdescription> <description_matched_substring> <offset>0</offset> <length>5</length> </description_matched_substring> <subdescription_matched_substring> <offset>5</offset> <length>3</length> </subdescription_matched_substring> </structured_formatting> </prediction> <prediction> <description>pizza near Pari Chowk, NRI City, Omega II, Noida, Uttar Pradesh, India</description> <term> <value>pizza</value> <offset>0</offset> </term> <term> <value>near</value> <offset>6</offset> </term> <term> <value>Pari Chowk</value> <offset>11</offset> </term> <term> <value>NRI City</value> <offset>23</offset> </term> <term> <value>Omega II</value> <offset>33</offset> </term> <term> <value>Noida</value> <offset>43</offset> </term> <term> <value>Uttar Pradesh</value> <offset>50</offset> </term> <term> <value>India</value> <offset>65</offset> </term> <matched_substring> <offset>0</offset> <length>5</length> </matched_substring> <matched_substring> <offset>11</offset> <length>3</length> </matched_substring> <structured_formatting> <description>pizza</description> <subdescription>near Pari Chowk, NRI City, Omega II, Noida, Uttar Pradesh, India</subdescription> <description_matched_substring> <offset>0</offset> <length>5</length> </description_matched_substring> <subdescription_matched_substring> <offset>5</offset> <length>3</length> </subdescription_matched_substring> </structured_formatting> </prediction> <prediction> <description>pizza near Disneyland Park, Disneyland Drive, Anaheim, CA, USA</description> <term> <value>pizza</value> <offset>0</offset> </term> <term> <value>near</value> <offset>6</offset> </term> <term> <value>Disneyland Park</value> <offset>11</offset> </term> <term> <value>Disneyland Drive</value> <offset>28</offset> </term> <term> <value>Anaheim</value> <offset>46</offset> </term> <term> <value>CA</value> <offset>55</offset> </term> <term> <value>USA</value> <offset>59</offset> </term> <matched_substring> <offset>0</offset> <length>5</length> </matched_substring> <matched_substring> <offset>22</offset> <length>3</length> </matched_substring> <structured_formatting> <description>pizza</description> <subdescription>near Disneyland Park, Disneyland Drive, Anaheim, CA, USA</subdescription> <description_matched_substring> <offset>0</offset> <length>5</length> </description_matched_substring> <subdescription_matched_substring> <offset>16</offset> <length>3</length> </subdescription_matched_substring> </structured_formatting> </prediction> <prediction> <description>pizza near Cathédrale Notre-Dame de Paris, Parvis Notre-Dame - place Jean-Paul-II, Paris, France</description> <term> <value>pizza</value> <offset>0</offset> </term> <term> <value>near</value> <offset>6</offset> </term> <term> <value>Cathédrale Notre-Dame de Paris</value> <offset>11</offset> </term> <term> <value>Parvis Notre-Dame - place Jean-Paul-II</value> <offset>43</offset> </term> <term> <value>Paris</value> <offset>83</offset> </term> <term> <value>France</value> <offset>90</offset> </term> <matched_substring> <offset>0</offset> <length>5</length> </matched_substring> <matched_substring> <offset>36</offset> <length>3</length> </matched_substring> <structured_formatting> <description>pizza</description> <subdescription>near Cathédrale Notre-Dame de Paris, Parvis Notre-Dame - place Jean-Paul-II, Paris, France</subdescription> <description_matched_substring> <offset>0</offset> <length>5</length> </description_matched_substring> <subdescription_matched_substring> <offset>30</offset> <length>3</length> </subdescription_matched_substring> </structured_formatting> </prediction> <prediction> <description>pizza near Paris Beauvais Airport, Route de l'Aéroport, Tillé, France</description> <term> <value>pizza</value> <offset>0</offset> </term> <term> <value>near</value> <offset>6</offset> </term> <term> <value>Paris Beauvais Airport</value> <offset>11</offset> </term> <term> <value>Route de l'Aéroport</value> <offset>35</offset> </term> <term> <value>Tillé</value> <offset>56</offset> </term> <term> <value>France</value> <offset>63</offset> </term> <matched_substring> <offset>0</offset> <length>5</length> </matched_substring> <matched_substring> <offset>11</offset> <length>3</length> </matched_substring> <structured_formatting> <description>pizza</description> <subdescription>near Paris Beauvais Airport, Route de l'Aéroport, Tillé, France</subdescription> <description_matched_substring> <offset>0</offset> <length>5</length> </description_matched_substring> <subdescription_matched_substring> <offset>5</offset> <length>3</length> </subdescription_matched_substring> </structured_formatting> </prediction> </AutocompletionResponse>
Khi dịch vụ Places trả về kết quả JSON từ một lượt tìm kiếm, dịch vụ này sẽ đặt các kết quả đó trong một mảng predictions. Ngay cả khi dịch vụ không trả về kết quả nào (chẳng hạn như nếu location ở xa), dịch vụ vẫn trả về một mảng predictions trống. Phản hồi XML bao gồm không hoặc nhiều phần tử <prediction>.
PlacesQueryAutocompleteResponse
| Trường | Bắt buộc | Loại | Mô tả |
|---|---|---|---|
|
bắt buộc | Array<PlaceAutocompletePrediction> |
Chứa một mảng các cụm từ gợi ý. Hãy xem PlaceAutocompletePrediction để biết thêm thông tin. |
|
bắt buộc | PlacesAutocompleteStatus |
Chứa trạng thái của yêu cầu và có thể chứa thông tin gỡ lỗi để giúp bạn theo dõi lý do khiến yêu cầu không thành công. Hãy xem PlacesAutocompleteStatus để biết thêm thông tin. |
|
tùy chọn | chuỗi |
Khi dịch vụ trả về một mã trạng thái khác với |
|
tùy chọn | Array<string> |
Khi dịch vụ trả về thông tin bổ sung về quy cách yêu cầu, có thể có thêm trường |
PlacesAutocompleteStatus
Mã trạng thái do dịch vụ trả về.
OKcho biết yêu cầu API đã thành công.-
ZERO_RESULTScho biết quá trình tìm kiếm đã thành công nhưng không trả về kết quả nào. Điều này có thể xảy ra nếu cụm từ tìm kiếm được truyền một ranh giới ở một vị trí từ xa. -
INVALID_REQUESTcho biết yêu cầu API bị lỗi định dạng, thường là do thiếu tham sốinput. -
OVER_QUERY_LIMITcho biết bất kỳ thông tin nào sau đây:- Bạn đã vượt quá giới hạn QPS.
- Bạn chưa bật tính năng thanh toán cho tài khoản của mình.
- Bạn đã vượt quá hạn mức sử dụng tự đặt hoặc hạn mức tín dụng 200 USD hằng tháng.
- Phương thức thanh toán bạn cung cấp không còn hợp lệ (ví dụ: thẻ tín dụng đã hết hạn).
-
REQUEST_DENIEDcho biết yêu cầu của bạn đã bị từ chối, thường là do:- Yêu cầu thiếu khoá API.
- Tham số
keykhông hợp lệ.
UNKNOWN_ERRORcho biết đã xảy ra lỗi không xác định.
Khi dịch vụ Places trả về kết quả JSON từ một cụm từ tìm kiếm, dịch vụ này sẽ đặt các kết quả đó trong một mảng predictions. Ngay cả khi dịch vụ không trả về kết quả nào (chẳng hạn như nếu location ở xa), dịch vụ vẫn trả về một mảng predictions trống. Phản hồi XML bao gồm 0 hoặc nhiều phần tử <prediction>.
PlaceAutocompletePrediction
| Trường | Bắt buộc | Loại | Mô tả |
|---|---|---|---|
|
bắt buộc | chuỗi |
Chứa tên mà con người có thể đọc được cho kết quả được trả về. Đối với |
|
bắt buộc | Array<PlaceAutocompleteMatchedSubstring> |
Một danh sách các chuỗi con mô tả vị trí của cụm từ đã nhập trong văn bản kết quả dự đoán, để cụm từ đó có thể được làm nổi bật nếu muốn. Hãy xem PlaceAutocompleteMatchedSubstring để biết thêm thông tin. |
|
bắt buộc | PlaceAutocompleteStructuredFormat |
Cung cấp văn bản được định dạng sẵn có thể xuất hiện trong kết quả tự động hoàn thành. Bạn nên đọc nội dung này như hiện trạng. Đừng phân tích cú pháp địa chỉ đã định dạng theo cách lập trình. Hãy xem PlaceAutocompleteStructuredFormat để biết thêm thông tin. |
|
bắt buộc | Array<PlaceAutocompleteTerm> |
Chứa một mảng các thuật ngữ xác định từng phần của nội dung mô tả được trả về (một phần của nội dung mô tả thường kết thúc bằng dấu phẩy). Mỗi mục trong mảng đều có một trường Hãy xem PlaceAutocompleteTerm để biết thêm thông tin. |
|
tùy chọn | số nguyên |
Khoảng cách theo đường thẳng (tính bằng mét) từ điểm khởi hành. Trường này chỉ được trả về cho các yêu cầu được thực hiện bằng |
|
tùy chọn | chuỗi |
Giá trị nhận dạng dạng văn bản xác định một địa điểm duy nhất. Để truy xuất thông tin về địa điểm, hãy truyền giá trị nhận dạng này vào trường placeId của một yêu cầu API Places. Để biết thêm thông tin về mã địa điểm, hãy xem bài viết tổng quan về Mã địa điểm. |
|
tùy chọn | chuỗi |
Xem place_id. |
|
tùy chọn | Array<string> |
Chứa một mảng các loại áp dụng cho địa điểm này. Ví dụ: |
PlaceAutocompleteMatchedSubstring
| Trường | Bắt buộc | Loại | Mô tả |
|---|---|---|---|
|
bắt buộc | số |
Độ dài của chuỗi con khớp trong văn bản kết quả dự đoán. |
|
bắt buộc | số |
Vị trí bắt đầu của chuỗi con trùng khớp trong văn bản kết quả dự đoán. |
PlaceAutocompleteStructuredFormat
| Trường | Bắt buộc | Loại | Mô tả |
|---|---|---|---|
|
bắt buộc | chuỗi |
Chứa văn bản chính của một kết quả dự đoán, thường là tên của địa điểm. |
|
bắt buộc | Array<PlaceAutocompleteMatchedSubstring> |
Chứa một mảng có giá trị Hãy xem PlaceAutocompleteMatchedSubstring để biết thêm thông tin. |
|
tùy chọn | chuỗi |
Chứa văn bản phụ của một cụm từ gợi ý, thường là vị trí của địa điểm. |
|
tùy chọn | Array<PlaceAutocompleteMatchedSubstring> |
Chứa một mảng có giá trị Hãy xem PlaceAutocompleteMatchedSubstring để biết thêm thông tin. |
PlaceAutocompleteTerm
| Trường | Bắt buộc | Loại | Mô tả |
|---|---|---|---|
|
bắt buộc | số |
Xác định vị trí bắt đầu của thuật ngữ này trong nội dung mô tả, được đo bằng các ký tự Unicode |
|
bắt buộc | chuỗi |
Văn bản của từ khoá. |