1. 程式人生 > >mongodb實現lbs地理位置查詢附近的商家

mongodb實現lbs地理位置查詢附近的商家

本文借鑑 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 } } } )