为了账号安全,请及时绑定邮箱和手机立即绑定

如何从具有当前纬度和经度的 cosmos db 查找最近的优惠券

如何从具有当前纬度和经度的 cosmos db 查找最近的优惠券

C#
互换的青春 2023-07-09 17:58:58
我在 Cosmos db 中有一个优惠券容器,其中包含 id、名称、类别、纬度和经度字段。我正在保存不同区域的优惠券并保存这些区域的纬度和经度。我想搜索当前用户英里半径内的优惠券,例如 50 英里内。我正在从他们的设备获取用户位置的纬度和经度。纬度和经度的格式为 lat: 24.8779 long: 67.0641。我正在使用 cosmos db 的 SQL API 来查询数据。请指导我对此的查询是什么?
查看完整描述

1 回答

?
大话西游666

TA贡献1817条经验 获得超14个赞

首先确保以 GeoJSON 格式存储优惠券坐标。例如,请参阅下面的位置字段:


{

  "country": "AD",

  "name": "Sant Julià de Lòria",

  "location": {

    "type": "Point",

    "coordinates": [

        42.46372,

        1.49129

    ]

  },

}

然后,使用ST_DISTANCE函数进行查询,例如:


SELECT * FROM c

WHERE ST_DISTANCE(c.location, {'type': 'Point', 'coordinates':[42.54277, 1.73361]}) < (50 * 1609.344)

ST_DISTANCE使用米,因此乘以 1609.344 是将英里转换为米。

查看完整回答
反对 回复 2023-07-09
  • 1 回答
  • 0 关注
  • 68 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信