Bạn có thể dùng tính năng Tự động hoàn thành cụm từ tìm kiếm (Cũ) để đưa ra cụm từ gợi ý cho nội dung 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 về tính năng Tự động hoàn thành cụm từ tìm kiếm (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 (Cũ) cho phép bạn thêm cụm từ gợi ý về địa lý cho cụm từ tìm kiếm 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 nội dung 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 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 (Cũ) có thể khớp với 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 để đưa ra cụm từ gợi ý nhanh chóng.
Yêu cầu Tự động hoàn thành cụm từ tìm kiếm (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 cần có một số tham số nhất định để bắt đầu yêu cầu Tự động hoàn thành cụm từ tìm kiếm (Cũ).
Theo tiêu chuẩn trong URL, tất cả tham số đều được phân tách bằng ký tự dấu và (&). Danh sách các tham số và giá trị có thể có của các tham số đó được liệt kê bên dưới.
Tham số bắt buộc
input
Chuỗi văn bản cần tìm kiếm. Dịch vụ Place Autocomplete sẽ trả về các kết quả phù hợ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ủa chúng.
Thông số tùy chọn
language
Ngôn ngữ để trả về kết quả.
- Xem danh sách 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ể không đầy đủ.
-
Nếu bạn không cung cấp
language, thì 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 hết sức để cung cấp đị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 đó, API này sẽ trả về địa chỉ đường phố bằng ngôn ngữ địa phương, được chuyển tự sang một hệ chữ viết mà người dùng có thể đọc được nếu cần, đồng thời tuân thủ ngôn ngữ ưu tiên. Tất cả các địa chỉ khác được trả về bằng ngôn ngữ ưu tiên. Tất 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 tên phù hợp nhất.
- Ngôn ngữ ưu tiên có ảnh hưởng nhỏ đến nhóm kết quả mà API chọn trả về và thứ tự trả về. Bộ 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à các từ đồng nghĩa với "đường" trong tiếng Hungary.
vị trí
Xác định một điểm (dưới dạng toạ độ latitude,longitude) để tìm kiếm xung quanh điểm đó.
Dịch vụ Địa điểm sử dụng vị trí để thiên vị kết quả tìm kiếm, ưu tiên hiển thị kết quả trong khu vực được xác định bằng location và radius; kết quả bên ngoài khu vực được xác định vẫn có thể xuất hiện.
location có thể bị ghi đè nếu query chứ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 cho location và radius.
độ lệch
Vị trí (trong cụm từ nhập vào) của ký tự cuối cùng mà dịch vụ sử dụng để so khớp cụm từ gợi ý. Ví dụ: nếu giá trị đầu vào là Google và độ lệch là 3, thì dịch vụ sẽ khớp với Goo. Chuỗi được xác định theo độ lệch chỉ được so khớp với từ đầu tiên trong cụm từ đầu vào. Ví dụ: nếu cụm từ đầu vào là Google abc và độ lệch là 3, thì dịch vụ sẽ cố gắng so khớp với Goo 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ừ. Thông thường, bạn nên đặt độ lệch thành vị trí của con 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ể thiên vị kết quả cho một vòng tròn cụ thể bằng cách truyền tham số location và radius.
Thao tác này sẽ hướng dẫn dịch vụ Địa điểm ư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ể hiển thị.
Bán kính sẽ tự động được giới hạn ở một giá trị tối đa tuỳ thuộc vào loại tìm kiếm và các tham số khác.
- Tự động hoàn thành: 50.000 mét
-
Nearby Search:
- với
keywordhoặcname: 50.000 mét -
mà không có
keywordhoặcname-
Tối đa 50.000 mét, được điều chỉnh linh động 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 động dựa trên mật độ khu vực, không phụ thuộc vào tham số
- với
- 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 cụm từ tìm kiếm (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 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 (Cũ)
Phản hồi của tính năng Tự động hoàn thành cụm từ tìm kiếm (Cũ) được trả về theo định dạng được chỉ định bằng cờ output 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ụ Địa điểm 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ả đó
vào 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), thì 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 tìm ra 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ề thông số kỹ thuật của 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 rằng 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 nội dung tìm kiếm được chuyển đến một ranh giới ở một vị trí từ xa. -
INVALID_REQUESTcho biết yêu cầu API không đúng định dạng, thường là do thiếu tham sốinput. -
OVER_QUERY_LIMITcho biết bất kỳ điều nào sau đây:- Bạn đã vượt quá giới hạn QPS.
- Tài khoản của bạn chưa được bật tính năng thanh toán.
- Bạn đã vượt quá khoản tín dụng 200 USD hằng tháng hoặc hạn mức sử dụng do bạn tự đặt ra.
- Phương thức thanh toán được 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 lỗi không xác định.
Khi dịch vụ Địa điểm 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ả đó
vào 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), thì 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 kết quả |
|
bắt buộc | Array<PlaceAutocompleteMatchedSubstring> |
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, nhờ đó, bạn có thể làm nổi bật cụm 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. Nội dung này được dùng để đọc nguyên trạng. Đừng phân tích cú pháp địa chỉ được định dạng theo phương thức 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 cụm từ 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 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 xuất phát. 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 giúp xác định duy nhất một địa điểm. Để 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 yêu cầu API Địa điểm. Để 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 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 cụm từ gợi ý, 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 cụm từ này trong nội dung mô tả, được đo bằng ký tự Unicode |
|
bắt buộc | chuỗi |
Văn bản của từ khoá. |