簡體   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