從零開始製作一個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教學前端開發


相關文章
一鍵發版背後:三個 repo 的分工
一鍵發版背後:三個 repo 的分工
ricky - 2026-07-09T02:00:00Z
一顆「發版」按鈕,背後牽動 fleet-console、部署後端與目標服務三個 repo。本文拆解版本號為什麼不能由前端計算、docker build --build-arg 如何無條件帶入 APP_...
同一個測驗,我隔三年重寫了一次
同一個測驗,我隔三年重寫了一次
ricky - 2026-08-23T02:50:34.654532Z
2023 年寫的三個線上測驗,2026 年整個重寫。同一份題目、同一個作者,差別不在技術:當初沒問過「他們在什麼情況下用」,而課堂上一群人拿手機填,在程式碼裡留下了一頁到底、id 重複、把觸控目標縮小...
React整合Hilltop廣告教學
React整合Hilltop廣告教學
ricky - 2025-12-28T09:28:46Z
本篇將介紹如何在 React 專案中整合 Hilltop 廣告,從元件化、動態載入到寬高設定與多單元支援的技術細節。
訂閱電子報
隨時掌握最新的創業故事與設計開發過程
內容包含來自麒航團隊的日常分享、專業知識與工具推薦,助你了解更多創業背後的思維與技術。
麒航私房推薦
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: --
創業實驗筆記 - Clelereve Blog | 從零開始製作一個ip查詢網站-第三章 透過IP取得地理位置 | Clelereve Blog