繁体   English   中英

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

[英]How to find nearest coupon from cosmos db with current Latitude and Longitude

我在Cosmos db中有一个Coupon容器,其中包含id,名称,类别,纬度和经度字段。 我为不同地区保存优惠券,并保存其中的纬度和经度。 我想搜索当前用户英里半径内(例如50英里内)的优惠券。 我正在从他们的设备获取用户位置的经度和纬度。 纬度和经度格式为lat:24.8779 long:67.0641。 我正在使用SQL API for cosmos db查询数据。 请指导我对此的查询是什么?

首先,请确保将优惠券坐标存储为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将英里转换为米。

有关更多信息,请参见https://docs.microsoft.com/zh-cn/azure/cosmos-db/geospatial

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM