服務

38 家門市、一個月燒掉 NT$16.9 萬:門市據點查詢與地圖功能怎麼做才不會被帳單反殺

2026.09.18 · 14 次瀏覽
38 家門市、一個月燒掉 NT$16.9 萬:門市據點查詢與地圖功能怎麼做才不會被帳單反殺

Google 已在 2025 年 3 月取消每月 200 美元抵用金,改成每個 SKU 各自的免費額度,Nearby Search Pro 每千次 32 美元。本文拆解四種圖資方案、最近 N 家查詢、地理圍欄、真實成本與六個必避陷阱。

分享:

一家 38 家門市的連鎖餐飲打來求救:官網與 App 的「找附近門市」上線第二個月,Google Cloud 帳單 5,290 美元,約新台幣 16.9 萬。原因只有一個——前端每次地圖拖曳、每次輸入關鍵字,都直接打一次 Places API Nearby Search。Google 官方價目表上,Nearby Search Pro 每月僅 5,000 次免費,超過後每千次 32 美元,是 Dynamic Maps(每千次 7 美元)的四倍以上。地圖不貴,貴的是沒人管的呼叫次數。

適用情境 × 不適用情境

值得投入

  • 據點超過 10 家且跨縣市,使用者真的要「最近的三家」
  • 外送範圍因店而異,需地理圍欄判斷送不送
  • 常有新開、搬遷、臨時公休,需後台自助維護
  • 官網與 App 共用同份資料,每店一個可索引網址

先別做

  • 只有 1–3 家店:一段 Maps Embed(官方列為無上限免費 SKU)就夠
  • 純線上服務,或清單一年改不到一次
  • 主檔沒整理:地址寫法不一、缺經緯度、時間是文字
  • 預算低於 NT$30,000:先做靜態據點列表頁

四種圖資方案的取捨

方案免費額度超額價取捨
Google Maps Platform載入與編碼各 10,000 次/月,Nearby Search Pro 僅 5,000 次載入 $7/千、編碼 $5/千、Nearby Search Pro $32/千POI 精度最高,但單價落差大
Mapbox網頁載入 50,000 次、Temporary Geocoding 100,000 次載入 $5/千起(降至 $2.50)、編碼 $0.75/千自訂樣式佳,POI 密度較低
MapTiler CloudFree 方案 5,000 sessions、1,000 搜尋 sessions(非商用)Flex $30/月含 25,000 sessions,超額 $2.50/千預算敏感者首選,商用需付費
自架 OSM+Nominatim無 API 費用伺服器估算 NT$4,000–8,000/月資料可落地,維運工時高

關鍵是流量會不會越過免費額度。另外公用的 nominatim.openstreetmap.org 在 OSMF 使用政策中明訂絕對上限每秒 1 次請求,且禁止自動完成與系統性查詢,不能當正式服務。

完整流程拆解

  • 階段一・資料治理(3–5 天):收齊主檔,欄位含店名、地址、經緯度、電話、每週時段與例外公休。交付 CSV 範本與欄位字典。工具:Google Sheets、Notion。
  • 階段二・批次地理編碼(2 天):用 Laravel Artisan 指令跑 Geocoding 寫回 POINT 欄位,複核低信心門牌。交付補齊報表。工具:Google Geocoding API(前 10,000 次免費)。
  • 階段三・後端查詢(5–7 天):MySQL 8 的 POINT 欄位加 SPATIAL INDEX,先 bounding box 粗篩再以 ST_Distance_Sphere 排序;營業中判斷在 Asia/Taipei 時區處理跨午夜;第三方呼叫走代理並快取。交付 nearby API。工具:Laravel、Redis、Scribe。
  • 階段四・前端與降級(5–8 天):官網用地圖+列表雙欄,Flutter 端用 google_maps_flutter 或 flutter_map;導航以 Maps URLs deep link 交給原生地圖。交付原型與清單。工具:Figma、Cloudflare。

真實成本完整拆解

  • ScriptWalker 門市據點模組 NT$45,000 起:地圖+列表、最近 N 家、營業中篩選、後台匯入
  • 地理圍欄多邊形編輯器 NT$35,000 起;Flutter App 地圖畫面 NT$30,000 起
  • 隱藏費用一・圖資月費:Google Starter 訂閱每月 100 美元含 5 萬次呼叫,約 NT$3,200
  • 隱藏費用二・資料維運:營業時間異動每月約 1–2 小時
  • 隱藏費用三・自架成本:伺服器估算每月 NT$4,000–8,000 加更新工時
  • 隱藏費用四・監控:Cloudflare 速率限制、UptimeRobot 與預算警示約 4 小時

實施真相 vs 客戶想像

  • 以為地址丟進去就有經緯度;實際門牌寫法不一,38 家店常有 3–6 家要人工校正。
  • 以為地圖是一筆費用;實際載入、地點搜尋、地理編碼、路線是四個獨立 SKU,各有額度與單價。
  • 以為營業時間是一欄、外送範圍畫個圓就好;實際要處理午休斷點、跨午夜與颱風公休,而半徑 3 公里可能跨過沒橋的河。

六個最常見的陷阱

  • API Key 沒設限制:外流即被盜刷。解法:Web Key 綁 HTTP referrer、Android 綁簽章、iOS 綁 bundle id,並在 Cloud Console 設每日配額上限。
  • 每次拖曳就打一次搜尋:解法:改查自家資料庫,第三方 API 只在必要時呼叫,前端加 300–500 毫秒 debounce。
  • 把公用 Nominatim 當正式服務:解法:自架或改用商用供應商並快取。
  • 沒有降級方案:額度用盡整頁空白。解法:載入失敗退回靜態地圖。
  • 自己算路線:解法:導航用 deep link 交給原生 App;只有多點派送才需 Routes 或自架 OSRM。
  • 沒有預算警示:解法:Cloud Billing 設 50%/80%/100% 通知,每週看 SKU 明細。

成功指標與 90 天路線圖

  • 30 天:看每工作階段的 API 呼叫次數、地圖載入成功率與查詢到店轉換率,把單人搜尋壓到 3 次以內。
  • 60 天:比對門市頁自然搜尋曝光與導航點擊,找出搜尋量高卻沒據點的區域。
  • 90 天:算出每千次工作階段的圖資成本,決定 pay-as-you-go 或改訂閱制;外送範圍換成多邊形並回測拒單率。

決策清單

  • ☐ 據點超過 10 家
  • ☐ 門市主檔完整、地址格式可批次編碼
  • ☐ 使用者真的需要「離我最近」
  • ☐ 需要營業中判斷或外送地理圍欄
  • ☐ 官網與 App 共用同份據點資料
  • ☐ 可估算每月載入與搜尋次數
  • ☐ 已決定 API Key 限制與配額
  • ☐ 已設定預算警示與負責人
  • ☐ 已規劃降級畫面並有人每月維護資料
  • ☐ 每家門市需獨立網址做 SEO

常見問題

一定要用 Google Maps 嗎?

不一定。只要顯示自家圖釘與最近 N 家,Mapbox 或 MapTiler 的免費額度通常就夠。常見混搭是底圖用 MapTiler,地址搜尋用 Google Geocoding。

每月 200 美元的免費額度還在嗎?

不在了。Google 於 2025 年 3 月改成每個 SKU 各自的額度:Essentials 每月 10,000 次、Pro 5,000 次、Enterprise 1,000 次,見 官方定價總覽。多 SKU 混用必須逐項試算。

多久可以上線?

資料齊全時官網版約 3 週,含 Flutter App 與地理圍欄約 5–6 週。最常延誤的不是開發,是主檔的時間與地址校正。

額度用完或服務中斷怎麼辦?

門市清單走自家 API 與本地快取,地圖改用靜態地圖(前 10,000 次免費、之後每千次 2 美元)或地址卡片,導航按鈕仍可用 deep link。

下一步

把門市數量、月訪客量、是否需要外送範圍告訴我們,我們回一份雙方案的選型試算與時程表。門市據點模組 NT$45,000 起,含首月呼叫次數健檢。

分享: