如何使用当前经纬度从 cosmos db 中找到最近的优惠券
How to find nearest coupon from cosmos db with current Latitude and Longitude
我在 Cosmos db 中有一个优惠券容器,其中包含 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/en-us/azure/cosmos-db/geospatial。
我在 Cosmos db 中有一个优惠券容器,其中包含 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/en-us/azure/cosmos-db/geospatial。