越来越多的移动应用开始青睐”附近的用户”这个功能点,自驾游对讲机也不能免俗,当然他的主要应用场景不是约炮,而是为了方便寻找一起出门的朋友,加为好友,一起开始大家的美妙旅程。
说重点:
以前也搞过类似的功能点,根据用户当前的GPS坐标搜索附近的银行,用户的位置是可以随便乱跑的,并且这种功能一般他搜了一次找到了就不会再找第二次了,所以用memcache这种缓存方案思路是不对的。当时几百万数据运转在Mysql上,每次调用这个功能俺都心惊胆颤的,当然,我们也搞了几次优化
1:银行的GPS位置信息首先做预处理,把x,y的平方什么的先当冗余字段存起来
2:先圈一个大范围,把数据量降下来,再按距离算
3:用户想要的信息也许不止一页,先弄五页出来,存在memcache,先保证下次来拿的时候节省数据库一点资源
总的来说,这方案搞起来比较纠结…..
好吧,新项目总得来点新气象。
先后研究了Cassandra,HBase,mongoDB三种NoSql类的数据库,mongoDB的地理空间索引功能的确比较符合我们的胃口。
好,下面,上代码
1:
数据结构
gps键的值是包含两个键的内嵌文档
2:建2d索引(没有索引运行不起哦)
public static void createGroup2DIndex(){
try {
Mongo
m = new
Mongo(DB_Address,
27017);
DB
db = m.getDB(DB_Name);
DBCollection
collection = db.getCollection(Position);
collection.createIndex(new BasicDBObject("gps", "2d"));
}
catch
(Exception e) {
//TODO
}
}
3:查询
public static
void
getPositionBox(){
try {
Mongo
mongo = new
Mongo(DB_Address,
27017);
DB db = mongo.getDB(DB_Name);
DBCollection
collection = db.getCollection("Position");
BasicDBObject
searchQuery = new
BasicDBObject();
BasicDBObject
centerQuery = new
BasicDBObject("$center",new Box(new Gps(Double.valueOf(104),
Double.valueOf(30)), 2.4d));
BasicDBObject
withinQuery = new
BasicDBObject("$within",
centerQuery);
searchQuery.put("gps", withinQuery);
DBCursor cursor = collection.find(searchQuery);
….处理返回结果
}
catch
(Exception e) {
//TODO
}
}
Ok!选择了好友,我们就可以一起出发了!自驾游对讲机帮我们记录一路上的欢声笑语,枯燥旅程上的点点滴滴,既能方便的打情骂俏,又能准确的位置跟踪, 我们是快乐的自驾族,谁也跑不了。
- 大小: 14.4 KB
- 大小: 307.2 KB
- 大小: 139.6 KB
分享到:
相关推荐
Hash允许我们将多个字段(如用户名、位置坐标等)与一个唯一的键关联起来,这样在查询附近的人时,可以通过高效的Hash操作快速获取和更新数据。 在“附近的人”功能实现中,我们可能需要以下几个步骤: 1. **数据...
1. 用户权限:应用在获取用户位置信息前,必须先获得用户的许可。同时,用户有权随时关闭位置分享。 2. 数据加密:传输和存储用户位置信息时,应采用加密技术,防止数据泄露。 3. 隐私设置:用户应能选择是否向...
LBS允许应用获取用户的位置信息,并根据这个信息提供相关的服务,如搜索附近的餐厅、好友或其他用户。这个demo展示了如何在Android平台上实现这样的功能。 1. **Android位置API**: - Android提供了多种获取位置...
1. 定位技术:首先,应用需要获取用户的实时位置信息。这通常依赖于GPS全球定位系统,但在室内或者GPS信号不好的情况下,会结合Wi-Fi网络定位和蓝牙低功耗(Bluetooth Low Energy, BLE)设备来辅助定位。例如,Wi-Fi...
【Python-tweek插件在微信中自定义用户当前所在的位置从而查看附近的人】 在移动互联网时代,微信已经成为了人们日常生活中不可或缺的社交工具。而微信的“附近的人”功能,让用户能够发现并结识周围的人,增加了...
1. **地理位置服务**:要实现“附近的人”功能,首先需要获取用户的位置信息。这通常通过集成第三方定位服务如Google Maps API或高德地图API来实现。这些服务提供了获取经纬度坐标的方法,通过GPS、Wi-Fi信号或其他...
4. **地理位置处理**:为了实现“附近的人”功能,首先需要获取用户的位置信息。这通常通过GPS、网络定位或者其他定位服务实现。然后,根据用户的经纬度坐标,计算与其他用户之间的距离。这里可能需要用到地理坐标...
- **定位原理**:QQ附近人利用GPS、Wi-Fi或移动网络信号来获取用户的位置信息,然后展示附近使用该功能的QQ用户。 - **功能亮点**:用户可以查看和发送打招呼信息,添加好友,甚至进行实时聊天,增进与附近人的...
- 使用数据库存储用户的位置信息,查询时根据用户位置筛选出一定范围内的其他用户。 - 数据库查询优化:如果数据库支持空间索引(如SQL Server的Spatial类型),可以提高查询性能。 5. **WinForm实现**: - 在...
通过以上步骤,我们可以实现一个基本的搜索附近人的功能。当然,实际的开发过程可能需要根据业务需求和用户反馈进行迭代和优化。这个源码项目提供了一个起点,开发者可以在此基础上添加更多的特性和定制化功能。
许多用户都关心自己的位置信息是否能够被他人获取和追踪。这篇文章将指导用户如何清除手机QQ的位置信息,从而保护自己的隐私。 在开始之前,我们需要了解为什么需要清除手机QQ的位置信息。随着移动设备的普及,移动...
在这个特定的“附近的人Apps”中,百度LBS可能被用来获取用户的位置信息,实时更新并显示用户周围使用该应用的其他人。 【详细知识点】 1. **百度LBS服务**:百度LBS提供API接口,开发者可以通过这些接口获取用户...
7. 接口集成:最后,开发者需要将以上所有组件整合进应用程序中,利用百度LBS云提供的SDK和API,编写合适的代码来实现查找附近人的功能。这可能涉及前端界面设计、后端逻辑处理以及服务器通信等环节。 综上所述,...
用户界面的设计需要考虑易用性和用户体验,例如滑动刷新、列表加载更多等功能,以及对附近人的排序规则(如按距离、活跃度等)。 9. **性能优化**: 由于“查看附近的人”涉及到大量的位置计算和网络通信,需要...
然而,由于信息资源的不平等分布,残疾人往往难以及时获取合适的就业信息,而潜在的雇主也可能无法有效地接触到这一特殊群体。为此,基于地理信息系统的残疾人就业APP应运而生,旨在打破这种信息壁垒,为残疾人提供...
2. **位置信息获取**:位置信息主要通过卫星导航系统获取,如GPS、GLONASS(俄罗斯)、Galileo(欧洲)和BeiDou(中国)等。此外,Wi-Fi信号强度、蓝牙信标和移动通信基站也能提供辅助定位信息,尤其在室内或卫星...
在Demo中,可能将周围人的位置信息存储在云端,通过API请求获取并显示在地图上。这涉及到数据的上传、检索和更新操作。 5. **实时更新**:为了实现“实时显示周围人”,应用需要不断地更新用户位置及周围人的位置...
软件的核心功能在于简化了在QQ2013中查找并联系附近用户的过程,通过自动化的方式获取更多的用户信息,并且可以一键发送预先设定的搭讪内容。 首先,使用这款软件前,用户需要确保已经登录了QQ2013,并且在面板中...