地圖上的商店:地理位置、類型顏色與附近搜尋
新功能玩家商店現在會以彩色圖釘顯示在 2D 世界地圖上。每間商店都有地理位置和類型——讓你一眼就能看到世界各地的五金行、食品店、健身工作室和其他商家分佈在哪裡。
更棒的是:你現在可以依據半徑搜尋你位置附近的商店。想在 50 公里內找一間健身房?只要輸入距離、選擇類別,然後點擊搜尋即可。
商店類型與顏色
每位商店擁有者在建立或編輯商店時都會選擇一個類型。每種類型在地圖上都有專屬的顏色和圖示:
地圖圖釘
當你開啟世界地圖時,已設定位置的商店會以彩色圖釘顯示。將滑鼠停留在圖釘上即可看到:
- 商店名稱與類型
- 簡短描述
- 貨幣(CC 或 KC)
- 商品數量
點擊圖釘即可直接跳轉到該商店並瀏覽其商品。
圖釘使用與預先渲染的國家形狀相同的 geoNaturalEarth1 投影,因此能與地圖完美對齊。當你放大或縮小時,圖釘會自動調整大小。
附近搜尋
在商店面板中,你會看到一個新的 「📍 附近搜尋」 搜尋列:
- 選擇類別——例如健身、食品、五金,或「所有類型」
- 設定半徑——以公里為單位(預設:50 公里)
- 點擊搜尋——系統會找出該半徑內所有該類型的商店
搜尋預設使用你的家園國家位置。如果你的瀏覽器支援地理定位,你也可以使用真實的 GPS 位置來獲得更精確的結果。
搜尋結果會顯示每間商店的名稱、類型、貨幣、商品數量以及公里距離。點擊搜尋結果即可立即切換到該商店。
在幕後,搜尋使用Haversine 公式——與導航中使用的大圓距離計算相同——來精確計算你的位置與每間有地理位置的商店之間的距離。
商店擁有者須知
如果你擁有商店,你現在可以設定你的位置和商店類型:
- 在商店面板中開啟我的商店
- 點擊你的商店以查看詳情頁面
- 點擊**「📍 設定位置」**(如果你已有位置,則點擊「更新位置」)
- 點擊迷你地圖來設定你的商店位置
- 從顏色標示的選擇器中選擇商店類型
- 點擊儲存
你的商店會立即以彩色圖釘出現在世界地圖上,其他玩家可以透過附近搜尋找到你。
你也可以在建立商店時設定位置和類型——表單現在已包含這兩個欄位。
幕後運作原理
資料庫中的地理座標
shop_channels 資料表現在儲存 lat、lng 和 shop_type 欄位。此遷移會在伺服器啟動時自動執行——無需手動修改資料庫。
兩個新的 API 端點
GET /shop/map-pins 回傳所有具有地理座標的活躍商店,供地圖渲染使用。GET /shop/nearby?lat=&lng=&radius_km=&category= 執行半徑搜尋,先以邊界框預篩選,再進行精確的 Haversine 距離計算。
投影匹配
2D 地圖使用來自 geoNaturalEarth1 投影的預先渲染 SVG 路徑。商店圖釘在執行時使用相同的投影,將經緯度轉換為 SVG 座標,確保與國家邊界完美對齊。
下一步計畫
此次更新為 ENLIGHTENMENT 中的地理感知商務奠定了基礎。未來的改進包括:
- 商店群集——在高縮放層級下將附近的圖釘分組
- 路線規劃——查看如何前往實體商店
- 商店評論與評分
- 地圖上的精選商店
- 依地區的商店目錄
ENLIGHTENMENT 是一款基於區塊鏈的遊戲,關於個人成長、原型探索與集體共鳴。歡迎加入我們:getplasma.org。