從零開始製作一個ip查詢網站-第三章 透過IP取得地理位置
取得使用者 IP,ipify API,React useEffect,地理位置取得,使用者經緯度
Chris-
11 月 29,2025

從零開始製作一個ip查詢網站-第三章 透過IP取得地理位置

第二章我們成功取得使用者的 IP,但光有一串數字還做不了什麼。 這一章的任務,就是把 IP 變成「看得懂的資訊」——例如國家、城市、時區,甚至是經緯度。 有了經緯度後,我們才能進一步把位置丟到地圖上,整個功能才算真正開始有模有樣。

選擇能查詢位置的 API

既然要透過 IP 取得地理資訊,我再挑選了一個非常好用的服務: ipapi.co。它回傳的內容完整,包含:

  • 國家
  • 城市
  • 地區
  • 緯度/經度
  • 時區
  • 網路業者 ISP

查詢格式是這樣:

https://ipapi.co/你的IP/json/

回傳資料看起來像這樣:

{
    "ip": "123.123.123.123",
    "city": "Taipei",
    "region": "Taiwan",
    "country_name": "Taiwan",
    "latitude": 25.0478,
    "longitude": 121.5319,
    "timezone": "Asia/Taipei"
}

在 React 裡查詢 IP 位置資料

有了 API 後,我把第二章取到的 IP 帶進去一起查詢。 這裡我使用 useEffect 在 IP 更新後自動打 API:

import {useState,useEffect} from "react"

function App(){
    const[ip,setIp]=useState("")
    const[location,setLocation]=useState(null)

    useEffect(function(){
        fetch("https://api.ipify.org?format=json")
        .then(function(res){
            return res.json()
        })
        .then(function(data){
            setIp(data.ip)
        })
    },[])

    useEffect(function(){
        if(ip!=""){
            fetch("https://ipapi.co/"+ip+"/json/")
            .then(function(res){
                return res.json()
            })
            .then(function(data){
                setLocation(data)
            })
        }
    },[ip])

    return(
        <div>
            <div>你的IP:{ip}</div>

            {location&&(
                <div>
                    城市:{location.city}<br>
                    國家:{location.country_name}<br>
                    緯度:{location.latitude}<br>
                    經度:{location.longitude}
                </div>
            )}
        </div>
    )
}

export default App

這樣就能同時顯示:

  • 使用者的 IP
  • 所在城市
  • 國家名稱
  • 經緯度

位置資訊到這裡就算完整取得了,接下來就能把地圖加入畫面。

小結:有了經緯度,下一步把地圖放上去

第三章的進度算是整個專案最關鍵的轉折點之一。 因為有了經緯度,就能準備開始在頁面上放上地圖、標記位置,讓整個頁面不再只是文字。

下一章,會開始介紹如何把地圖嵌入 React 以及標出使用者的位置。

Tags:
IP定位React教學前端開發


相關文章
React整合Hilltop廣告教學
ricky - 2025-12-28T09:28:46Z
本篇將介紹如何在 React 專案中整合 Hilltop 廣告,從元件化、動態載入到寬高設定與多單元支援的技術細節。
第一個案子|什麼都不會的我,硬著頭皮成立公司
ricky - 2025-05-13T13:17:28Z
當創意初現,很多人會說這想法太天馬行空、不切實際;但當同樣的點子被外國專家提出、或已有成功案例時,卻又搖身一變成了「可行方案」。這篇文章透過一張圖,揭露我們對 idea 評估方式的盲點:問題不在於技術...
從零開始製作一個ip查詢網站-第五章 專案部署到 Cloudflare Pages
chris - 2025-12-28T06:03:48Z
本篇將示範如何把完成的 React IP 查詢網站部署到 Cloudflare Pages,從連接 GitHub、設定建置指令,到綁定自訂網域並啟用 HTTPS,用最省事的方式讓前端專案正式上線。
訂閱電子報
隨時掌握最新的創業故事與設計開發過程
內容包含來自麒航團隊的日常分享、專業知識與工具推薦,助你了解更多創業背後的思維與技術。
麒航私房推薦
Clelereve Blog LogoClelereve Blog LogoClelereve Blog Logo
廣告區
Clelereve Blog Logo
聯絡我們
任何合作或問題請洽:
clelereve@gmail.com
Follow us
Copyright © 2025 blog.clelereve.com - All Rights Reserved
Frontend Version: -- | Backend Version: --