PHP实现搜索地理位置及计算两点地理位置间距离的实例
地理位置搜寻
LBS,存储每个地点的经纬度坐标,搜寻附近的地点,建立地理位置索引可提高查询效率。
mongodb地理位置索引,2d和2dsphere,对应平面和球面。
1.创建lbs集合存放地点坐标
uselbs; db.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 } } } )
搜寻结果:
{"_id":ObjectId("556a651996f1ac2add8928fa"),"loc":{"type":"Point","coordinates":[113.330611,23.147234]},"name":"林和西"}