地圖上的商店:地理位置、類型顏色與附近搜尋

新功能

玩家商店現在會以彩色圖釘顯示在 2D 世界地圖上。每間商店都有地理位置和類型——讓你一眼就能看到世界各地的五金行、食品店、健身工作室和其他商家分佈在哪裡。

更棒的是:你現在可以依據半徑搜尋你位置附近的商店。想在 50 公里內找一間健身房?只要輸入距離、選擇類別,然後點擊搜尋即可。

商店類型與顏色

每位商店擁有者在建立或編輯商店時都會選擇一個類型。每種類型在地圖上都有專屬的顏色和圖示:

🔧 五金
🍎 食品
🛠️ 服務
💾 數位
👕 服飾
🎨 藝術
💪 健身
📚 教育
💼 顧問
📍 其他
◆ 綜合

地圖圖釘

當你開啟世界地圖時,已設定位置的商店會以彩色圖釘顯示。將滑鼠停留在圖釘上即可看到:

  • 商店名稱與類型
  • 簡短描述
  • 貨幣(CC 或 KC)
  • 商品數量

點擊圖釘即可直接跳轉到該商店並瀏覽其商品。

圖釘使用與預先渲染的國家形狀相同的 geoNaturalEarth1 投影,因此能與地圖完美對齊。當你放大或縮小時,圖釘會自動調整大小。

附近搜尋

在商店面板中,你會看到一個新的 「📍 附近搜尋」 搜尋列:

  1. 選擇類別——例如健身、食品、五金,或「所有類型」
  2. 設定半徑——以公里為單位(預設:50 公里)
  3. 點擊搜尋——系統會找出該半徑內所有該類型的商店

搜尋預設使用你的家園國家位置。如果你的瀏覽器支援地理定位,你也可以使用真實的 GPS 位置來獲得更精確的結果。

搜尋結果會顯示每間商店的名稱、類型、貨幣、商品數量以及公里距離。點擊搜尋結果即可立即切換到該商店。

在幕後,搜尋使用Haversine 公式——與導航中使用的大圓距離計算相同——來精確計算你的位置與每間有地理位置的商店之間的距離。

商店擁有者須知

如果你擁有商店,你現在可以設定你的位置和商店類型:

  1. 在商店面板中開啟我的商店
  2. 點擊你的商店以查看詳情頁面
  3. 點擊**「📍 設定位置」**(如果你已有位置,則點擊「更新位置」)
  4. 點擊迷你地圖來設定你的商店位置
  5. 從顏色標示的選擇器中選擇商店類型
  6. 點擊儲存

你的商店會立即以彩色圖釘出現在世界地圖上,其他玩家可以透過附近搜尋找到你。

你也可以在建立商店時設定位置和類型——表單現在已包含這兩個欄位。

幕後運作原理

🌍 資料庫中的地理座標
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。