Place Autocomplete 服務是傳回地點的網路服務 回應 HTTP 要求這項要求會指定 搜尋字串和選用的地理邊界。這項服務可用於 提供自動完成功能,方便搜尋以文字為依據的地理區域。 例如商家、地址和搜尋點 使用者類型
Place Autocomplete 要求
Place Autocomplete 服務是 Places API 和 API 金鑰和配額 Places API。
Place Autocomplete 服務可比對完整字詞和子字串, 解析地點名稱、地址,以及 + 代碼。因此,應用程式可在使用者輸入內容時傳送查詢,藉此提供 即時預測地點。
您必須正確設定 Plus Codes。這表示您必須逸出加號,並將
%2B
,且您必須將網址逸出空格轉換為 %20
。
- 「全球代碼」是四個字元的區碼,長度為 6 個半形字元以上
本地程式碼。舉例來說,網址逸出全域程式碼
849VCWC8+R9
為849VCWC8%2BR9
。 - 複合代碼是六個字元 (或更長) 的當地代碼,
明確位置例如網址逸出的複合程式碼
CWC8+R9 Mountain View, CA, USA
是CWC8%2BR9%20Mountain%20View%20CA%20USA
。
傳回的預測結果旨在協助使用者 選擇想查詢的地點您可以傳送 Place Details 要求一文,進一步瞭解哪些 。
「地方資訊自動完成」要求是採用下列格式的 HTTP 網址:
https://maps.googleapis.com/maps/api/place/autocomplete/output?parameters
其中 output
可為下列其中一個值:
json
(建議使用) 表示輸出內容是以 JavaScript 呈現 物件標記法 (JSON)xml
表示輸出格式為 XML
需要某些參數,才能提出 Place Autocomplete 要求。
跟網址的標準一樣,這裡的所有參數都會以 & 符號分隔
(&
) 字元。參數清單及可能性
下面列舉了幾個例子
Required parameters
input
The text string on which to search. The Place Autocomplete service will return candidate matches based on this string and order results based on their perceived relevance.
Optional parameters
components
A grouping of places to which you would like to restrict your results. Currently, you can use components to filter by up to 5 countries. Countries must be passed as a two character, ISO 3166-1 Alpha-2 compatible country code. For example:
components=country:fr
would restrict your results to places within France. Multiple countries must be passed as multiplecountry:XX
filters, with the pipe character|
as a separator. For example:components=country:us|country:pr|country:vi|country:gu|country:mp
would restrict your results to places within the United States and its unincorporated organized territories.Note: If you receive unexpected results with a country code, verify that you are using a code which includes the countries, dependent territories, and special areas of geographical interest you intend. You can find code information at Wikipedia: List of ISO 3166 country codes or the ISO Online Browsing Platform.language
The language in which to return results.
- See the list of supported languages. Google often updates the supported languages, so this list may not be exhaustive.
-
If
language
is not supplied, the API attempts to use the preferred language as specified in theAccept-Language
header. - The API does its best to provide a street address that is readable for both the user and locals. To achieve that goal, it returns street addresses in the local language, transliterated to a script readable by the user if necessary, observing the preferred language. All other addresses are returned in the preferred language. Address components are all returned in the same language, which is chosen from the first component.
- If a name is not available in the preferred language, the API uses the closest match.
- The preferred language has a small influence on the set of results that the API chooses to return, and the order in which they are returned. The geocoder interprets abbreviations differently depending on language, such as the abbreviations for street types, or synonyms that may be valid in one language but not in another. For example, utca and tér are synonyms for street in Hungarian.
location
The point around which to retrieve place information. This must be specified as
latitude,longitude
. Theradius
parameter must also be provided when specifying a location. Ifradius
is not provided, thelocation
parameter is ignored.When using the Text Search API, the `location` parameter may be overriden if the `query` contains an explicit location such as `Market in Barcelona`.locationbias
Prefer results in a specified area, by specifying either a radius plus lat/lng, or two lat/lng pairs representing the points of a rectangle. If this parameter is not specified, the API uses IP address biasing by default.
-
IP bias: Instructs the API to use IP address biasing. Pass the string
ipbias
(this option has no additional parameters). -
Circular: A string specifying radius in meters, plus lat/lng in decimal
degrees. Use the following format:
circle:radius@lat,lng
. -
Rectangular: A string specifying two lat/lng pairs in decimal degrees,
representing the south/west and north/east points of a rectangle. Use
the following format:
rectangle:south,west|north,east
. Note that east/west values are wrapped to the range -180, 180, and north/south values are clamped to the range -90, 90.
-
IP bias: Instructs the API to use IP address biasing. Pass the string
locationrestriction
Restrict results to a specified area, by specifying either a radius plus lat/lng, or two lat/lng pairs representing the points of a rectangle.
-
Circular: A string specifying radius in meters, plus lat/lng in decimal
degrees. Use the following format:
circle:radius@lat,lng
. -
Rectangular: A string specifying two lat/lng pairs in decimal degrees,
representing the south/west and north/east points of a rectangle. Use
the following format:
rectangle:south,west|north,east
. Note that east/west values are wrapped to the range -180, 180, and north/south values are clamped to the range -90, 90.
-
Circular: A string specifying radius in meters, plus lat/lng in decimal
degrees. Use the following format:
offset
The position, in the input term, of the last character that the service uses to match predictions. For example, if the input is
Google
and the offset is 3, the service will match onGoo
. The string determined by the offset is matched against the first word in the input term only. For example, if the input term isGoogle abc
and the offset is 3, the service will attempt to match againstGoo abc
. If no offset is supplied, the service will use the whole term. The offset should generally be set to the position of the text caret.origin
The origin point from which to calculate straight-line distance to the destination (returned as
distance_meters
). If this value is omitted, straight-line distance will not be returned. Must be specified aslatitude,longitude
.radius
Defines the distance (in meters) within which to return place results. You may bias results to a specified circle by passing a
location
and aradius
parameter. Doing so instructs the Places service to prefer showing results within that circle; results outside of the defined area may still be displayed.The radius will automatically be clamped to a maximum value depending on the type of search and other parameters.
- Autocomplete: 50,000 meters
-
Nearby Search:
- with
keyword
orname
: 50,000 meters -
without
keyword
orname
-
Up to 50,000 meters, adjusted dynamically based on area density,
independent of
rankby
parameter. -
When using
rankby=distance
, the radius parameter will not be accepted, and will result in anINVALID_REQUEST
.
-
Up to 50,000 meters, adjusted dynamically based on area density,
independent of
- with
- Query Autocomplete: 50,000 meters
- Text Search: 50,000 meters
region
The region code, specified as a ccTLD ("top-level domain") two-character value. Most ccTLD codes are identical to ISO 3166-1 codes, with some notable exceptions. For example, the United Kingdom's ccTLD is "uk" (.co.uk) while its ISO 3166-1 code is "gb" (technically for the entity of "The United Kingdom of Great Britain and Northern Ireland").
sessiontoken
A random string which identifies an autocomplete session for billing purposes.
The session begins when the user starts typing a query, and concludes when they select a place and a call to Place Details is made. Each session can have multiple queries, followed by one place selection. The API key(s) used for each request within a session must belong to the same Google Cloud Console project. Once a session has concluded, the token is no longer valid; your app must generate a fresh token for each session. If the
sessiontoken
parameter is omitted, or if you reuse a session token, the session is charged as if no session token was provided (each request is billed separately).We recommend the following guidelines:
- Use session tokens for all autocomplete sessions.
- Generate a fresh token for each session. Using a version 4 UUID is recommended.
- Ensure that the API key(s) used for all Place Autocomplete and Place Details requests within a session belong to the same Cloud Console project.
- Be sure to pass a unique session token for each new session. Using the same token for more than one session will result in each request being billed individually.
strictbounds
Returns only those places that are strictly within the region defined by
location
andradius
. This is a restriction, rather than a bias, meaning that results outside this region will not be returned even if they match the user input.types
You can restrict results from a Place Autocomplete request to be of a certain type by passing the
types
parameter. This parameter specifies a type or a type collection, as listed in Place Types. If nothing is specified, all types are returned.A place can only have a single primary type from types listed in Table 1 or Table 2. For example, a hotel where food is served may by returned only with
types=lodging
and not withtypes=restaurant
.For the value of the
types
parameter you can specify either:Up to five values from Table 1 or Table 2. For multiple values, separate each value with a
|
(vertical bar). For example:types=book_store|cafe
Any single supported filter in Table 3. You cannot mix type collections.
The request will be rejected with an
INVALID_REQUEST
error if:
Place Autocomplete 範例
要求包含「Amoeba」字串的建築物範圍內 以加州舊金山為中心的區域:
網址
https://maps.googleapis.com/maps/api/place/autocomplete/json ?input=amoeba &location=37.76999%2C-122.44696 &radius=500 &types=establishment &key=YOUR_API_KEY
cURL
curl -L -X GET 'https://maps.googleapis.com/maps/api/place/autocomplete/json?input=amoeba&types=establishment&location=37.76999%2C-122.44696&radius=500&key=YOUR_API_KEY'
同一個要求,只能傳回 Ashbury St &500 公尺以內的結果哈特街 舊金山:
網址
https://maps.googleapis.com/maps/api/place/autocomplete/json ?input=amoeba &location=37.76999%2C-122.44696 &radius=500 &strictbounds=true &types=establishment &key=YOUR_API_KEY
cURL
curl -L -X GET 'https://maps.googleapis.com/maps/api/place/autocomplete/json?input=amoeba&types=establishment&location=37.76999%2C-122.44696&radius=500&strictbounds=true&key=YOUR_API_KEY'
以下則是針對在搜尋結果中含有 "Vict" (法文) 的地址發出的要求範例:
網址
https://maps.googleapis.com/maps/api/place/autocomplete/json ?input=Vict &language=fr &types=geocode &key=YOUR_API_KEY
cURL
curl -L -X GET 'https://maps.googleapis.com/maps/api/place/autocomplete/json?input=Vict&types=geocode&language=fr&key=YOUR_API_KEY'
包含「Vict」的城市廣告請求結果顯示巴西葡萄牙文:
網址
https://maps.googleapis.com/maps/api/place/autocomplete/json ?input=Vict &language=pt_BR &types=%28cities%29 &key=YOUR_API_KEY
cURL
curl -L -X GET 'https://maps.googleapis.com/maps/api/place/autocomplete/json?input=Vict&types=(cities)&language=pt_BR&key=YOUR_API_KEY'
請注意,您需要替換網頁的 API 金鑰 您專屬的金鑰
Place Autocomplete 回應
Place Autocomplete 回應傳回的格式是以
output
旗標。下方為
表示查詢中可能會傳回的內容如下
參數:
網址
https://maps.googleapis.com/maps/api/place/autocomplete/json ?input=Paris &types=geocode &key=YOUR_API_KEY
cURL
curl -L -X GET 'https://maps.googleapis.com/maps/api/place/autocomplete/json?input=Paris&types=geocode&key=YOUR_API_KEY'
JSON
{ "predictions": [ { "description": "Paris, France", "matched_substrings": [{ "length": 5, "offset": 0 }], "place_id": "ChIJD7fiBh9u5kcRYJSMaMOCCwQ", "reference": "ChIJD7fiBh9u5kcRYJSMaMOCCwQ", "structured_formatting": { "main_text": "Paris", "main_text_matched_substrings": [{ "length": 5, "offset": 0 }], "secondary_text": "France", }, "terms": [ { "offset": 0, "value": "Paris" }, { "offset": 7, "value": "France" }, ], "types": ["locality", "political", "geocode"], }, { "description": "Paris, TX, USA", "matched_substrings": [{ "length": 5, "offset": 0 }], "place_id": "ChIJmysnFgZYSoYRSfPTL2YJuck", "reference": "ChIJmysnFgZYSoYRSfPTL2YJuck", "structured_formatting": { "main_text": "Paris", "main_text_matched_substrings": [{ "length": 5, "offset": 0 }], "secondary_text": "TX, USA", }, "terms": [ { "offset": 0, "value": "Paris" }, { "offset": 7, "value": "TX" }, { "offset": 11, "value": "USA" }, ], "types": ["locality", "political", "geocode"], }, { "description": "Paris, TN, USA", "matched_substrings": [{ "length": 5, "offset": 0 }], "place_id": "ChIJ4zHP-Sije4gRBDEsVxunOWg", "reference": "ChIJ4zHP-Sije4gRBDEsVxunOWg", "structured_formatting": { "main_text": "Paris", "main_text_matched_substrings": [{ "length": 5, "offset": 0 }], "secondary_text": "TN, USA", }, "terms": [ { "offset": 0, "value": "Paris" }, { "offset": 7, "value": "TN" }, { "offset": 11, "value": "USA" }, ], "types": ["locality", "political", "geocode"], }, { "description": "Paris, Brant, ON, Canada", "matched_substrings": [{ "length": 5, "offset": 0 }], "place_id": "ChIJsamfQbVtLIgR-X18G75Hyi0", "reference": "ChIJsamfQbVtLIgR-X18G75Hyi0", "structured_formatting": { "main_text": "Paris", "main_text_matched_substrings": [{ "length": 5, "offset": 0 }], "secondary_text": "Brant, ON, Canada", }, "terms": [ { "offset": 0, "value": "Paris" }, { "offset": 7, "value": "Brant" }, { "offset": 14, "value": "ON" }, { "offset": 18, "value": "Canada" }, ], "types": ["neighborhood", "political", "geocode"], }, { "description": "Paris, KY, USA", "matched_substrings": [{ "length": 5, "offset": 0 }], "place_id": "ChIJsU7_xMfKQ4gReI89RJn0-RQ", "reference": "ChIJsU7_xMfKQ4gReI89RJn0-RQ", "structured_formatting": { "main_text": "Paris", "main_text_matched_substrings": [{ "length": 5, "offset": 0 }], "secondary_text": "KY, USA", }, "terms": [ { "offset": 0, "value": "Paris" }, { "offset": 7, "value": "KY" }, { "offset": 11, "value": "USA" }, ], "types": ["locality", "political", "geocode"], }, ], "status": "OK", }
XML
<AutocompletionResponse> <status>OK</status> <prediction> <description>Paris, France</description> <type>locality</type> <type>political</type> <type>geocode</type> <reference>ChIJD7fiBh9u5kcRYJSMaMOCCwQ</reference> <term> <value>Paris</value> <offset>0</offset> </term> <term> <value>France</value> <offset>7</offset> </term> <matched_substring> <offset>0</offset> <length>5</length> </matched_substring> <place_id>ChIJD7fiBh9u5kcRYJSMaMOCCwQ</place_id> <structured_formatting> <description>Paris</description> <subdescription>France</subdescription> <description_matched_substring> <offset>0</offset> <length>5</length> </description_matched_substring> </structured_formatting> </prediction> <prediction> <description>Paris, TX, USA</description> <type>locality</type> <type>political</type> <type>geocode</type> <reference>ChIJmysnFgZYSoYRSfPTL2YJuck</reference> <term> <value>Paris</value> <offset>0</offset> </term> <term> <value>TX</value> <offset>7</offset> </term> <term> <value>USA</value> <offset>11</offset> </term> <matched_substring> <offset>0</offset> <length>5</length> </matched_substring> <place_id>ChIJmysnFgZYSoYRSfPTL2YJuck</place_id> <structured_formatting> <description>Paris</description> <subdescription>TX, USA</subdescription> <description_matched_substring> <offset>0</offset> <length>5</length> </description_matched_substring> </structured_formatting> </prediction> <prediction> <description>Paris, TN, USA</description> <type>locality</type> <type>political</type> <type>geocode</type> <reference>ChIJ4zHP-Sije4gRBDEsVxunOWg</reference> <term> <value>Paris</value> <offset>0</offset> </term> <term> <value>TN</value> <offset>7</offset> </term> <term> <value>USA</value> <offset>11</offset> </term> <matched_substring> <offset>0</offset> <length>5</length> </matched_substring> <place_id>ChIJ4zHP-Sije4gRBDEsVxunOWg</place_id> <structured_formatting> <description>Paris</description> <subdescription>TN, USA</subdescription> <description_matched_substring> <offset>0</offset> <length>5</length> </description_matched_substring> </structured_formatting> </prediction> <prediction> <description>Paris, Brant, ON, Canada</description> <type>neighborhood</type> <type>political</type> <type>geocode</type> <reference>ChIJsamfQbVtLIgR-X18G75Hyi0</reference> <term> <value>Paris</value> <offset>0</offset> </term> <term> <value>Brant</value> <offset>7</offset> </term> <term> <value>ON</value> <offset>14</offset> </term> <term> <value>Canada</value> <offset>18</offset> </term> <matched_substring> <offset>0</offset> <length>5</length> </matched_substring> <place_id>ChIJsamfQbVtLIgR-X18G75Hyi0</place_id> <structured_formatting> <description>Paris</description> <subdescription>Brant, ON, Canada</subdescription> <description_matched_substring> <offset>0</offset> <length>5</length> </description_matched_substring> </structured_formatting> </prediction> <prediction> <description>Paris, KY, USA</description> <type>locality</type> <type>political</type> <type>geocode</type> <reference>ChIJsU7_xMfKQ4gReI89RJn0-RQ</reference> <term> <value>Paris</value> <offset>0</offset> </term> <term> <value>KY</value> <offset>7</offset> </term> <term> <value>USA</value> <offset>11</offset> </term> <matched_substring> <offset>0</offset> <length>5</length> </matched_substring> <place_id>ChIJsU7_xMfKQ4gReI89RJn0-RQ</place_id> <structured_formatting> <description>Paris</description> <subdescription>KY, USA</subdescription> <description_matched_substring> <offset>0</offset> <length>5</length> </description_matched_substring> </structured_formatting> </prediction> </AutocompletionResponse>
PlacesAutocompleteResponse
Field | Required | Type | Description |
---|---|---|---|
| required | Array<PlaceAutocompletePrediction> | Contains an array of predictions. See PlaceAutocompletePrediction for more information. |
| required | PlacesAutocompleteStatus | Contains the status of the request, and may contain debugging information to help you track down why the request failed. See PlacesAutocompleteStatus for more information. |
| optional | string |
When the service returns a status code other than
|
| optional | Array<string> |
When the service returns additional information about the request
specification, there may be an additional
|
此結果特別適用於place_id
元素,可用來請求
來標記地點詳情請見
Place Details
要求。
XML 回應
<AutocompletionResponse>
元素包含兩種子項
元素:
- 單一
<status>
元素包含 請求。詳情請見 狀態碼。 - 零或多個
<prediction>
元素,每個元素包含下列元素 多個相關網頁的資訊詳情請見 Place Autocomplete 結果: 有關這些結果的資訊。Places API 會傳回 最多 5 筆結果。
我們建議您使用 json
做為偏好的輸出旗標
除非應用程式基於某種原因而需要 xml
。
處理 XML 樹狀結構需要很小心,才能正確參照節點
和元素詳情請見
處理中
帶有 XPath 的 XML 以協助處理 XML。
PlacesAutocompleteStatus
Status codes returned by service.
OK
indicating the API request was successful.ZERO_RESULTS
indicating that the search was successful but returned no results. This may occur if the search was passed a bounds in a remote location.INVALID_REQUEST
indicating the API request was malformed, generally due to the missinginput
parameter.OVER_QUERY_LIMIT
indicating any of the following:- You have exceeded the QPS limits.
- Billing has not been enabled on your account.
- The monthly $200 credit, or a self-imposed usage cap, has been exceeded.
- The provided method of payment is no longer valid (for example, a credit card has expired).
REQUEST_DENIED
indicating that your request was denied, generally because:- The request is missing an API key.
- The
key
parameter is invalid.
UNKNOWN_ERROR
indicating an unknown error.
當地點介面集服務傳回搜尋的 JSON 結果時,會將結果置於搜尋中
在 predictions
陣列內。即使服務傳回
沒有結果 (例如 location
屬於遠端)
仍會傳回空白的 predictions
陣列XML 回應包含
零或多個 <prediction>
元素。
PlaceAutocompletePrediction
Field | Required | Type | Description |
---|---|---|---|
| required | string |
Contains the human-readable name for the returned result. For
|
| required | Array<PlaceAutocompleteMatchedSubstring> | A list of substrings that describe the location of the entered term in the prediction result text, so that the term can be highlighted if desired. See PlaceAutocompleteMatchedSubstring for more information. |
| required | PlaceAutocompleteStructuredFormat | Provides pre-formatted text that can be shown in your autocomplete results. This content is meant to be read as-is. Do not programmatically parse the formatted address. See PlaceAutocompleteStructuredFormat for more information. |
| required | Array<PlaceAutocompleteTerm> |
Contains an array of terms identifying each section of the returned
description (a section of the description is generally terminated
with a comma). Each entry in the array has a
See PlaceAutocompleteTerm for more information. |
| optional | integer |
The straight-line distance in meters from the origin. This field is
only returned for requests made with an |
| optional | string | A textual identifier that uniquely identifies a place. To retrieve information about the place, pass this identifier in the placeId field of a Places API request. For more information about place IDs, see the Place IDs overview. |
| optional | string | See place_id. |
| optional | Array<string> |
Contains an array of types that apply to this place. For example:
|
PlaceAutocompleteMatchedSubstring
Field | Required | Type | Description |
---|---|---|---|
| required | number | Length of the matched substring in the prediction result text. |
| required | number | Start location of the matched substring in the prediction result text. |
PlaceAutocompleteStructuredFormat
Field | Required | Type | Description |
---|---|---|---|
| required | string | Contains the main text of a prediction, usually the name of the place. |
| required | Array<PlaceAutocompleteMatchedSubstring> |
Contains an array with See PlaceAutocompleteMatchedSubstring for more information. |
| optional | string | Contains the secondary text of a prediction, usually the location of the place. |
| optional | Array<PlaceAutocompleteMatchedSubstring> |
Contains an array with See PlaceAutocompleteMatchedSubstring for more information. |
PlaceAutocompleteTerm
Field | Required | Type | Description |
---|---|---|---|
| required | number | Defines the start position of this term in the description, measured in Unicode characters |
| required | string | The text of the term. |
Place Autocomplete 最佳化
本節將說明最佳做法,協助您充分運用 Place Autocomplete 服務。
以下列出幾項一般準則:
- 如要開發有效的使用者介面,最快的方法就是使用 Maps JavaScript API Autocomplete 小工具、Places SDK for Android Autocomplete 小工具,或 Places SDK for iOS Autocomplete UI 控制項
- 從一開始就嘗試瞭解 Place Autocomplete 的必要資料欄位。
- 「位置自訂調整」和「位置限制」為自選欄位,但可能會對自動完成效能產生重大影響。
- 使用錯誤處理機制,可以減輕 API 傳回錯誤時對應用程式效能造成的影響。
- 確保應用程式能處理未選取任何項目的情況,以便使用者繼續操作。
費用最佳化最佳做法
基本費用最佳化
為了讓 Place Autocomplete 服務費用發揮最大效益,請使用 Place Details 和 Place Autocomplete 小工具中的欄位遮罩,只傳回所需的地點資料欄位。
進階費用最佳化
建議您透過程式輔助方式導入 Place Autocomplete,採用按請求計價,並要求已選地點 (而非 Place Details) 的相關 Geocoding API 結果。如果同時符合以下兩項條件,搭配 Geocoding API 使用「按要求」計價會比使用「按工作階段」(以工作階段為準) 計價更具成本效益:
- 如果您只需要針對使用者選取的地點取得經緯度或地址,透過 Geocoding API 擷取這項資訊,支付的費用會比使用 Place Details 呼叫更低。
- 如果使用者在平均四次以內的自動預測結果要求選取了自動預測結果,則「按要求」計價可能會比「按工作階段」計價更符合成本效益。
除了所選預測結果的地址和經緯度,應用程式是否需要任何其他資訊?
是,需要更多詳細資料
搭配 Place Details 使用以工作階段為準的 Place Autocomplete。
您的應用程式會要求 Place Details (例如地點名稱、商家狀態或營業時間),因此在導入 Place Autocomplete 時,建議使用工作階段符記 (透過程式輔助方式,或是內建於 JavaScript、Android 或 iOS 小工具),總費用為每個工作階段 $0.017 美元,再加上適用的地點資料 SKU (視您要求的地點資料欄位而定)1。
透過小工具導入
JavaScript、Android 或 iOS 小工具自動內建工作階段管理功能,其中包含對已選取的預測結果提出的 Place Autocomplete 要求和 Place Details 要求。請務必指定 fields
參數,確保您只要求所需的地點資料欄位。
透過程式輔助方式導入
搭配 Place Autocomplete 要求使用工作階段符記。要求所選預測結果的相關 Place Details 時,請加入下列參數:
- Place Autocomplete 回應中的地點 ID
- Place Autocomplete 要求中使用的工作階段符記
- 指定所需地點資料欄位的
fields
參數
否,只需要地址和位置資訊
對您的應用程式而言,Geocoding API 可能比 Place Details 更符合成本效益,視 Place Autocomplete 使用效能而定。每個應用程式的自動完成效率各不相同,可能取決於使用者輸入的內容、使用應用程式的位置,以及是否採用效能最佳化最佳做法。
為了找出以下問題的解答,請分析使用者在應用程式中選取 Place Autocomplete 預測結果前,平均輸入的字元數量。
使用者是否會在平均四次以內的要求中選取 Place Autocomplete 預測結果?
是
透過程式輔助方式導入 Place Autocomplete,但不使用工作階段符記,並針對已選取的地點預測結果呼叫 Geocoding API。
Geocoding API 提供地址和經緯度座標,收費為每次要求 $0.005 美元。提出四次 Place Autocomplete - Per Request 要求的費用為 $0.01132 美元,因此如果將四次要求加上所選地點預測結果的相關 Geocoding API 呼叫,總費用就會是 $0.01632 美元,低於自動完成功能「按工作階段」計價的每個工作階段 $0.017 美元1。
建議您採用效能最佳做法,讓使用者以更少的字元找到需要的預測結果。
否
搭配 Place Details 使用以工作階段為準的 Place Autocomplete。
您預期使用者在選取 Place Autocomplete 預測結果前提出的平均要求數量,會超過「按工作階段」計價的費用,因此在導入 Place Autocomplete 時,建議針對 Place Autocomplete 要求和相關聯的 Place Details 要求都使用工作階段符記,總費用為每個工作階段 $0.017 美元1。
透過小工具導入
JavaScript、Android 或 iOS 小工具自動內建工作階段管理功能,其中包含對已選取的預測結果提出的 Place Autocomplete 要求和 Place Details 要求。請務必指定 fields
參數,確保只要求需要的 Basic Data 欄位。
透過程式輔助方式導入
搭配 Place Autocomplete 要求使用工作階段符記。要求所選預測結果的相關 Place Details 時,請加入下列參數:
- Place Autocomplete 回應中的地點 ID
- Place Autocomplete 要求中使用的工作階段符記
- 指定地址和幾何圖形等 Basic Data 欄位的
fields
參數
考慮延後 Place Autocomplete 要求
您可以運用一些策略,例如將 Place Autocomplete 要求延後到使用者輸入三或四個字元時再開始,藉此減少應用程式提出要求數量。舉例來說,如果您是在使用者輸入第三個字元「之後」才針對每個字元提出 Place Autocomplete 要求,那麼當使用者在輸入七個字元後,選取您透過單次 Geocoding API 要求帶出的一筆預測結果,總費用就是 $0.01632 美元 (4 * $0.00283 Autocomplete Per Request + $0.005 美元 Geocoding)1。
如果延後要求可以讓平均程式輔助要求少於四次,您可以按照使用 Geocoding API 提高 Place Autocomplete 效能的指南操作。請注意,如果使用者希望每輸入一個字就能看到預測結果,可能就會將延後要求視為時間上的延遲。
建議您採用效能最佳做法,讓使用者以更少的字元找到需要的預測結果。
-
這裡列出的費用是以美元計算。如需完整計價資訊,請參閱「Google 地圖平台計費方式」頁面。
效能最佳做法
以下準則說明如何將 Place Autocomplete 效能最佳化:
- 針對導入的 Place Autocomplete 加入國家/地區限制、位置自訂調整和 (適用於程式輔助導入) 語言偏好設定。小工具會從使用者的瀏覽器或行動裝置選擇語言偏好設定,因此不需要設定語言偏好。
- 如果 Place Autocomplete 附帶地圖,您就可以根據地圖可視區域進行位置自訂調整。
- 如果使用者沒有選擇任何自動預測結果 (通常是因為這些預測結果並非他們想要的地址),您可以重複使用原始使用者輸入內容,嘗試取得更相關的結果:
- 如果您預期使用者只會輸入地址資訊,請在 Geocoding API 呼叫中重複使用原始使用者輸入內容。
- 如果您預期使用者會依名稱或地址查詢某個地點,請使用「Find Place」要求。如果希望將結果範圍限制在特定區域,請使用位置自訂調整。
- 使用者輸入的次要場所地址,位於 Place Autocomplete 未能完整提供次要場所地址支援的國家/地區 (例如捷克、愛沙尼亞和立陶宛)。例如,捷克地址「Stroupežnického 3191/17, Praha」在 Place Autocomplete 中會產生不完整的預測結果。
- 使用者輸入的地址含有路段前置字元,例如紐約的「23-30 29th St, Queens」或夏威夷考艾島的「47-380 Kamehameha Hwy, Kaneohe」。
位置自訂調整
傳遞 location
參數和 radius
,將結果偏誤至指定區域
參數。這指示 Place Autocomplete 服務優先顯示結果
都位於定義區域內定義區域外的結果可能還是
高度。您可以使用 components
參數篩選結果
,單獨顯示指定國家/地區內的地點。
提示:建築物結果通常不會大幅排名
即使搜尋區域夠大,也有機會顯示在搜尋結果中如果您希望
顯示在混合的建築物/地理編碼結果中,您可以
再指定較小的半徑或者,您也可以使用 types=establishment
,即可將結果範圍限制在建築物內。
地區限制
傳送 locationrestriction
參數,將結果限制為指定區域。
你也可以將結果限制為 location
定義的區域
和 radius
參數,方法是新增 strictbounds
參數。這樣會指示 Place Autocomplete 服務只
地區內的結果