
Python語言調用免費查詢ip地址API
表單字段
從“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的功能:通過關鍵詞搜索Google自動完成 API、從 API Hub 分類瀏覽API 網站運營-SEO服務、從 開放平臺 分類瀏覽企業間接尋找API等。