表單字段

  1. 在下一個組件的頂部,導入以下依賴項
從“react”導入React、{ useEffect、useState、useRef };從“ @react-google-maps/api”導入{ useLoadScript } ;

2. 在組件外部聲明一個變量libraries。此變量讓 Google 腳本知道您正在訪問 Maps API 下的哪個 API。在組件外部聲明此變量非常重要。

const庫 = [ “地點” ];

3. 使用 useLoadScript 初始化腳本

const { isLoaded,loadError } = useLoadScript({const { isLoaded,loadError } = useLoadScript ( { googleMapsApiKey 
: process.env.NEXT_PUBLIC_GOOGLE_API_KEY ,庫 , });

process.env.NEXT_PUBLE_GOOGLE_API_KEY表示您從 Google Cloud Console 獲取的 API 密鑰。出于安全原因,最好將您的 API 密鑰存儲在項目結構根目錄的.env文件中,并使用全局變量process.env訪問它

4. 定義一個 useState 來保存你的輸入字段,以及一個 useRef 來引用你想要 Autocomplete API 的輸入

const [輸入,setInput] = useState({});const [input,setInput] = useState({}); 
const inputRef = useRef(null);

5. 定義一個 useEffect 鉤子,將自動完成API 附加到輸入字段,這也允許你向 自動完成API 添加限制

useEffect(()=> {useEffect(()=> {
如果(!isLoaded || loadError)返回;

const options = {
componentRestrictions:{ country: “ ng ” },
fields:[ “address_components”,“geometry” ] ,
};

const autocomplete = new google.maps.places.Autocomplete (inputRef.current ,options); autocomplete.addListener (“place_changed”,()=> handlePlaceChanged ( autocomplete)); //返回()=> autocomplete.removeListener(“place_changed”,handlePlaceChanged); } , [isLoaded,loadError]);

那里的選項對象包含對 自動完成API 的可選限制。讓我們來分解一下

componentRestrictions: { country: “ng”}:限制 API 預測的范圍,最多可以接收 4 個國家代碼。我們的代碼示例使用代表尼日利亞的 ng,因此,當用戶輸入文本時,API 將僅提供尼日利亞位置的預測。

fields: [‘“address_components”, “geometry”]:這限制了用戶選擇預測時 API 將返回的數據。address_components 返回數據,如路線、郵政編碼、plus_code 等,而 geometry 返回數據,如經度和緯度,可用于其他目的。如果您沒有為字段輸入值,API 將返回所有可能的數據,您將被相應地收費。使用此字段可避免接收您不需要的數據。

6. 為輸入定義 onChange 函數

const handleChange = (event) => {const  handleChange = ( event ) => { 
const {name, value} = event.target ; setInput
( ( values ) => ({...values, [name]: value }));
};

7. 定義 placeChange 函數來處理用戶選擇預測時發生的情況

const handlePlaceChanged = async(address) => {const  handlePlaceChanged = async ( address ) => { 
if (!isLoaded) return ;
const place = address.getPlace () if (!place || !place.geometry ) { setInput ({}); return ; } formData ( place); };

該函數處理兩件事

I. 確保用戶從 API 預測中選擇一個有效的預測,如果沒有,則將輸入字段設置為空

II. 將返回的數據傳遞給處理表單填寫的另一個函數

8. 定義處理表單填寫的函數

const formData = (data) => {const  formData = ( data ) => { 
const addressComponents = data? .address_components ;

const componentMap = {
subPremise : "",
premise : "",
street_number : "",
route : "",
country : "",
postal_code : "",
administrative_area_level_2 : "",
administrative_area_level_1 : "",
};

for ( const component of addressComponents) {
const componentType = component.types [ 0 ] ;
if (componentMap.hasOwnProperty ( componentType)) {
componentMap[componentType] = component.long_name ; }
}
const

formattedAddress =
${componentMap.subPremise} ${componentMap.premise} ${componentMap.street_number} ${componentMap.route} .trim ( ); const latitude = data? .geometry ? .location ? .lat (); const經度 = 數據?.幾何?.位置?. lng (); setInput((值)=>({ ...值, 街道地址:格式化地址, 國家:componentMap.國家, 郵政編碼:componentMap.郵政編碼, 城市:componentMap.行政區域級別 2, 州:componentMap.行政區域級別1 , 緯度:緯度, 經度:經度, })); };

我們之前將 API 設置為僅返回地址組件和幾何圖形,下面是我們訪問它們的方式。

我們定義一些變量來保存我們的數據,然后我們定義一個 for 循環來映射 addressComponents 數組,然后我們檢查返回的每個數據的類型,如果它符合我們的情況,我們就將它分配給適當的變量。

formattedAddress 變量使用模板文字將變量收集到單個字符串中

緯度和對數經度是從 API 響應中的幾何字段獲得的,可以通過調用函數.lat().lng()訪問它們,然后返回精確的值。

然后我們可以將這些值設置到我們的輸入對象中,以設置我們的輸入字段的值。

附言:根據所選擇的預測,某些字段(例如前提、子前提等)可能不可用并返回空格,因此使用 .trim() 方法刪除空格。

9. 定義輸入字段

輸入字段

注意包含 ref 的字段,自動完成 API 將在該字段上工作,而其余字段將基于預測選擇

10. 我們已成功集成 Google自動完成API 以進行表單填寫。我們的 UI 將如下所示

預先輸入搜索行為

自動填充字段

當用戶輸入時,API 會給出如上所示的預測,當用戶選擇一個預測時,它會填充 opther 字段,如上圖第二張所示。

自動完成預測框可以根據您的風格需求進行編輯。查看Google 文檔以獲取有關樣式的更多詳細信息

自動完成的 CSS 類

我們現在已經介紹了如何實現 Google位置自動完成API 以及一些策略,以確保您在優化成本的同時收到所需的數據。

如何找到自動完成API

冪簡集成是國內領先的API集成管理平臺,專注于為開發者提供全面、高效、易用的API集成解決方案。冪簡API平臺提供了多種維度發現API的功能:通過關鍵詞搜索Google自動完成 API、從 API Hub 分類瀏覽API 網站運營-SEO服務、從 開放平臺 分類瀏覽企業間接尋找API等。

上一篇:

如何在Python程序中使用NFT資產服務API接口?

下一篇:

智能風險管理服務API集成指南
#你可能也喜歡這些API文章!

我們有何不同?

API服務商零注冊

多API并行試用

數據驅動選型,提升決策效率

查看全部API→
??

熱門場景實測,選對API

#AI文本生成大模型API

對比大模型API的內容創意新穎性、情感共鳴力、商業轉化潛力

25個渠道
一鍵對比試用API 限時免費

#AI深度推理大模型API

對比大模型API的邏輯推理準確性、分析深度、可視化建議合理性

10個渠道
一鍵對比試用API 限時免費