`
guofeng007
  • 浏览: 1790 次
文章分类
社区版块
存档分类
最新评论

根据位置信息获取附近的人

阅读更多


     越来越多的移动应用开始青睐附近的用户这个功能点,自驾游对讲机也不能免俗,当然他的主要应用场景不是约炮,而是为了方便寻找一起出门的朋友,加为好友,一起开始大家的美妙旅程。

   

说重点:

       以前也搞过类似的功能点,根据用户当前的GPS坐标搜索附近的银行,用户的位置是可以随便乱跑的,并且这种功能一般他搜了一次找到了就不会再找第二次了,所以用memcache这种缓存方案思路是不对的。当时几百万数据运转在Mysql上,每次调用这个功能俺都心惊胆颤的,当然,我们也搞了几次优化

       1:银行的GPS位置信息首先做预处理,把x,y的平方什么的先当冗余字段存起来

       2:先圈一个大范围,把数据量降下来,再按距离算

       3:用户想要的信息也许不止一页,先弄五页出来,存在memcache,先保证下次来拿的时候节省数据库一点资源

 

总的来说,这方案搞起来比较纠结…..

 

好吧,新项目总得来点新气象。

 

先后研究了CassandraHBasemongoDB三种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
分享到:
评论
1 楼 cc_xueqin 2012-12-31  
服务端技术文档,,做android的 先存起,以后备用。。话说看好这个应用哦。。楼主加油

相关推荐

    Spring boot基于redis实现附近的人

    Hash允许我们将多个字段(如用户名、位置坐标等)与一个唯一的键关联起来,这样在查询附近的人时,可以通过高效的Hash操作快速获取和更新数据。 在“附近的人”功能实现中,我们可能需要以下几个步骤: 1. **数据...

    扫描附近的人

    1. 用户权限:应用在获取用户位置信息前,必须先获得用户的许可。同时,用户有权随时关闭位置分享。 2. 数据加密:传输和存储用户位置信息时,应采用加密技术,防止数据泄露。 3. 隐私设置:用户应能选择是否向...

    android附近的人demo

    LBS允许应用获取用户的位置信息,并根据这个信息提供相关的服务,如搜索附近的餐厅、好友或其他用户。这个demo展示了如何在Android平台上实现这样的功能。 1. **Android位置API**: - Android提供了多种获取位置...

    搜索附近的人

    1. 定位技术:首先,应用需要获取用户的实时位置信息。这通常依赖于GPS全球定位系统,但在室内或者GPS信号不好的情况下,会结合Wi-Fi网络定位和蓝牙低功耗(Bluetooth Low Energy, BLE)设备来辅助定位。例如,Wi-Fi...

    Python-tweek插件在微信中自定义用户当前所在的位置从而查看附近的人

    【Python-tweek插件在微信中自定义用户当前所在的位置从而查看附近的人】 在移动互联网时代,微信已经成为了人们日常生活中不可或缺的社交工具。而微信的“附近的人”功能,让用户能够发现并结识周围的人,增加了...

    java实现附近的人功能.zip

    1. **地理位置服务**:要实现“附近的人”功能,首先需要获取用户的位置信息。这通常通过集成第三方定位服务如Google Maps API或高德地图API来实现。这些服务提供了获取经纬度坐标的方法,通过GPS、Wi-Fi信号或其他...

    java实现附近的人功能

    4. **地理位置处理**:为了实现“附近的人”功能,首先需要获取用户的位置信息。这通常通过GPS、网络定位或者其他定位服务实现。然后,根据用户的经纬度坐标,计算与其他用户之间的距离。这里可能需要用到地理坐标...

    2013 QQ附近人 bluestacks模拟器玩转手机qq

    - **定位原理**:QQ附近人利用GPS、Wi-Fi或移动网络信号来获取用户的位置信息,然后展示附近使用该功能的QQ用户。 - **功能亮点**:用户可以查看和发送打招呼信息,添加好友,甚至进行实时聊天,增进与附近人的...

    c# winfrom/asp.net实现查看附近的人和两个人之间的距离计算

    - 使用数据库存储用户的位置信息,查询时根据用户位置筛选出一定范围内的其他用户。 - 数据库查询优化:如果数据库支持空间索引(如SQL Server的Spatial类型),可以提高查询性能。 5. **WinForm实现**: - 在...

    Android+仿微信实现搜索附近的人功能源码

    通过以上步骤,我们可以实现一个基本的搜索附近人的功能。当然,实际的开发过程可能需要根据业务需求和用户反馈进行迭代和优化。这个源码项目提供了一个起点,开发者可以在此基础上添加更多的特性和定制化功能。

    怎么清除手机QQ位置信息?.docx

    许多用户都关心自己的位置信息是否能够被他人获取和追踪。这篇文章将指导用户如何清除手机QQ的位置信息,从而保护自己的隐私。 在开始之前,我们需要了解为什么需要清除手机QQ的位置信息。随着移动设备的普及,移动...

    附近的人Apps

    在这个特定的“附近的人Apps”中,百度LBS可能被用来获取用户的位置信息,实时更新并显示用户周围使用该应用的其他人。 【详细知识点】 1. **百度LBS服务**:百度LBS提供API接口,开发者可以通过这些接口获取用户...

    百度lbs云实现查找附近的人

    7. 接口集成:最后,开发者需要将以上所有组件整合进应用程序中,利用百度LBS云提供的SDK和API,编写合适的代码来实现查找附近人的功能。这可能涉及前端界面设计、后端逻辑处理以及服务器通信等环节。 综上所述,...

    安卓微信相关相关-Android版—微信如何实现查看附近的人.rar

    用户界面的设计需要考虑易用性和用户体验,例如滑动刷新、列表加载更多等功能,以及对附近人的排序规则(如按距离、活跃度等)。 9. **性能优化**: 由于“查看附近的人”涉及到大量的位置计算和网络通信,需要...

    基于地理信息系统的残疾人就业APP原型设计.pdf

    然而,由于信息资源的不平等分布,残疾人往往难以及时获取合适的就业信息,而潜在的雇主也可能无法有效地接触到这一特殊群体。为此,基于地理信息系统的残疾人就业APP应运而生,旨在打破这种信息壁垒,为残疾人提供...

    便携式终端和位置信息转换系统.zip

    2. **位置信息获取**:位置信息主要通过卫星导航系统获取,如GPS、GLONASS(俄罗斯)、Galileo(欧洲)和BeiDou(中国)等。此外,Wi-Fi信号强度、蓝牙信标和移动通信基站也能提供辅助定位信息,尤其在室内或卫星...

    百度LBS显示周围人demo

    在Demo中,可能将周围人的位置信息存储在云端,通过API请求获取并显示在地图上。这涉及到数据的上传、检索和更新操作。 5. **实时更新**:为了实现“实时显示周围人”,应用需要不断地更新用户位置及周围人的位置...

    QQ2013附近的人搭讪软件

    软件的核心功能在于简化了在QQ2013中查找并联系附近用户的过程,通过自动化的方式获取更多的用户信息,并且可以一键发送预先设定的搭讪内容。 首先,使用这款软件前,用户需要确保已经登录了QQ2013,并且在面板中...

Global site tag (gtag.js) - Google Analytics