1. 程式人生 > >mongodb 內建根據經緯度獲取圓形範圍的資料

mongodb 內建根據經緯度獲取圓形範圍的資料

簡介:公司需要,所以自己就在網上找了資料進行學習,希望為以後的你提供幫助。

寫前:mongodb開發環境配置好,我使用的技術spingboot+mongodb+rpc+doubbo

我要做什麼:以一個經緯度為圓心,然後通過mongodb內建技術實現以某半徑內的所有點,並計算點的距離,切還要分頁,排序(排序根據多個條件)

1:以某點為圓心,查詢半徑內的所有點

Within(在地理位置範圍內的):

findByLocationWithin(Circle circle) 

{"location" : {"$within" : {"$center" : [ [x, y], distance]}}}

使用這個需要新增索引:


其中distinct 的單位為:度 需要進行轉換,

如:以點(117.202, 31.97)20km範圍內的點;

{"loc" : {"$within" : {"$center" : [ [117.202, 31.97], 0.1796624]}}}

2:求以某點範圍內的點切與之間的距離

Point location = new Point(requestDoto.getLongitude(), requestDoto.getLatitude());
NearQuery query = NearQuery.near(location).num(1000).query(new Query()).maxDistance(new 
Distance(20, Metrics.KILOMETERS)); GeoResults<AuctionPo> geoResults = mongoTemplate.geoNear(query, AuctionPo.class);
即可獲的,