mongodb 內建根據經緯度獲取圓形範圍的資料
阿新 • • 發佈:2019-02-02
簡介:公司需要,所以自己就在網上找了資料進行學習,希望為以後的你提供幫助。
寫前: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);