地图上的商店:地理位置、类型颜色与附近搜索
全新玩家商店现在以彩色图钉的形式显示在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。