mongodb實現lbs地理位置查詢附近的商家
阿新 • • 發佈:2019-01-31
本文借鑑 http://blog.csdn.net/fdipzone/article/details/46285521
Java 程式碼
//查詢地理位置的條件
List<JSONObject> listJson=new ArrayList<>();
Double lng = 113.323568d; //經度
Double lat = 23.146436d; //緯度
Integer radius =1000;//範圍
Position pt = new Position(lng,lat);
Point po = new Point(pt);
Filters.nearSphere("loc",po,radius.doubleValue(),0.00);
MongoCursor<Document> list=MongoDBUtil.find(db, Filters.nearSphere("loc",po ,radius.doubleValue(),0.00));
while(list.hasNext()){
Document d=list.next ();
listJson.add(JSON.parseObject(diyObjectIdToJson(d)));
}
System.out.println(listJson.toString());
1.建立lbs集合存放地點座標
b.lbs.insert(
{
loc:{
type: "Point",
coordinates: [113.332264, 23.156206]
},
name : "廣州東站"
}
db.lbs.insert(
{
loc:{
type: "Point",
coordinates: [113.330611, 23.147234]
},
name: "林和西"
}
)
db.lbs.insert(
{
loc:{
type: "Point",
coordinates: [113.328095, 23.165376]
},
name: "天平架"
}
)
2.建立地理位置索引
db.lbs.ensureIndex(
{
loc: "2dsphere"
}
)
3.查詢附近的座標
當前位置為:時代廣場,
座標:113.323568, 23.146436
搜尋附近一公里內的點,由近到遠排序
db.lbs.find(
{
loc: {
$near:{
$geometry:{
type: "Point",
coordinates: [113.323568, 23.146436]
},
$maxDistance: 1000
}
}
}
)