[英]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.