在服务端保存有海量的兴趣点(POI,Point of Interest),根据用户的位置,如何判断用户当前出在哪个POI呢?
兴趣点是海量的,用户也是电信级的。如果每次查询用户所处的兴趣点,都要将全部兴趣点取出来计算一遍距离,从中选取最小的,这样会给服务端带来极大的压力(计算量级别约为:兴趣点数*用户数)。
我们知道赤道约为4万公里,1度大约为111公里,1分大约为2公里,1秒大约为33米(经纬度的单位分别为度、分、秒,1度=60分=60*60秒)。
我们可以根据用户所在位置的经纬度,先从海量数据中选取用户周围一定范围内的兴趣点,然后计算用户与兴趣点之间的距离,从而选出用户所处的兴趣点。
但是,位置信息都是有一定的精度范围的,一般GPS定位精度在10米左右,基站定位精度在1000M左右,另外有的POI本来就是在一起的,比如一个是在一楼,另一个是在两楼。因此如果单单通过计算距离的最小值来选出用户所处的兴趣点也不可能完全正确。我们可以将一定范围以内的兴趣点提供给用户,让用户自己来确定在所处的兴趣点。
假设用户所在的位置信息为(px,py,pm),px表示精度,py表示纬度,pm表示精度。我们从海量兴趣点数据库中,选取满足一下条件的兴趣点:
1.经度范围在px-0.1~px+0.1(单位度)
2.纬度范围在py-0.1~py+0.1(单位度)
备注:0.1度=6分 约等于12公里
这样就可以选出用户周围24公里*24公里这样一个范围的兴趣点。
针对以上兴趣点,我们逐个计算用户与兴趣点之间的距离,选取距离在 1000+pm (单位米)范围内的兴趣点,提供给用户进行选择确认。
计算模型中的参数可根据实际数据进行微调
以上方案,通过第一次筛选,极大减少了第二次筛选的计算量。主要压力为从海量数据库中查询出满足条件的兴趣点记录。不过这问题不大,完全可以通过优化数据库进行解决,如根据经纬度对表进行分区,或者基于经纬度进行函数索引等等。
首先,是因为用户的位置信息有不同的来源:GPS/WIFI/基站;其次,用户是在移动的;最后,每次获得的位置信息的准确度是在变化的。所以这些原因造成想要获得用户的准确位置信息是一件很复杂的事情。
获取用户的位置信息是异步的,android通过调用一个listener回调函数,告诉应用用户的具体位置。但是,这种方式需要用户等一段时间才行,如果希望短时间内获取用户的位置信息,可以采用locationManager.getLastKnownLocation获取用户最近一次的位置信息,然后等待listener来更新更加准确的用户位置信息。
前面已经知道,多种原因造成我们获得的用户位置信息不是那么准确,如果我们希望能够得到较为精确的位置信息怎么办?
如果用户是在不断移动的:那么不断通过listener获取用户位置信息,并从中找到最准确的位置信息;
如果用户是相对静止的:那么通过listener获取用户位置信息,并从中找到最准确的位置信息,如果连续n次,都没有找到比之前的位置信息更加准确,那么认为已经找到最准确信息,删除listener;
如果只需要获取用户粗略位置信息:那么通过listerer获取用户位置信息,从前面n个位置信息中,找到最准确的,删除listener;
分享到:
相关推荐
针对查询K近邻兴趣点方法多基于...用户构造包含这K个目标兴趣点的匿名框并注入虚假兴趣点查询请求,LBS服务器只返回匿名框内的兴趣点查询结果。该方法在控制通信开销的同时,能够保护用户的位置隐私和查询内容隐私。
基于地理位置的社交平台,系统主要使用Java语言进行研发,主要涉及兴趣活动发布、组织,评论,用户,单聊/私聊等功能模块。需求分析中,主要介绍各模块的功能。平台设计中,根据需求分析,设计E-R图,并完成数据库表...
基于锚点,提出了一种兴趣点查询算法,利用锚点可以推断出精确的结果,而不必将用户的实际位置发送给LBS服务器。 实验表明,我们的方法在QoS和隐私保护之间取得了折衷,并且具有良好的工作性能。
首先,基于路网顶点(锚点)组织兴趣点(PoI)分布信息,以单个路网顶点为基本处理对象,构造基于伪随机置换的LBS服务端兴趣点记录置换方案,该方案以32 bit随机种子生成置换表,并对兴趣点记录进行加密和置换处理后...
针对LBS查询服务中构造的匿名框或选取的锚点仍位于敏感区域而导致的位置隐私泄漏问题,提出了基于敏感位置多样性的锚点选取算法。该算法根据用户访问数量和访问高峰时段,对不同敏感位置进行定义和筛选,选择具有...
这类索引的好处是给定查询点以后,可以从查询占所在索引结点出发,沿着树型索引依次访问到离查询点距离越来越远的被索引的点。 经典低采样率地图匹配算法:ST – Matching。将GPS点映射到路网中的相应的路段。 路径...
针对用户在获得位置服务的同时,用户的位置隐私可能...经过性能分析和实验结果表明,在考虑用户节点之间半可信或不可信的情况下,可以解决SpaceTwist方法中的查询兴趣点围绕锚点分布不均衡的缺陷问题,提高查询准确度。
作为第三代移动通信系统的一种应用——基于定位的服务(LBS)越来越引起移动运营商的重视。如何实现LBS应用也引起了很多人的兴趣。Push型的应用是一种首先由服务方发起,然后向用户发送特定信息的LBS应用,如何实现...
用户以固定锚点代替真实位置,向位置服务器逐步获取兴趣点候选集并计算出想要的结果,避免位置隐私直接泄漏的同时获取精准查询结果。该算法同时解决了锚点与用户过近而带来的位置隐私被推断问题。实验表明本方法在...
Xseed 是基于用户的信息交换和用户交互的中心化场所——活跃且高度基于用户的位置和兴趣。 当 Xseed 用户走自己的路时,基于兴趣和相关的数据将自动推送到他们的智能手机上。 该系统可以被配置为从用户交互中学习...
为了提供兴趣点(POI),LBS以三种不同的格式面临着众多与隐私相关的挑战,包括非受信任的第三方(NTTP),受信任的第三方(TTP)和移动对等(P2P)。 当前的研究强调了基于TTP的LBS系统,其中位置服务器无法为移动...
随着如智能手机和平板电脑等移动设备的普及, 基于位置的服务(LBS)变得越来越流行, 人们通过网络进行查询的同时, 将自己的位置信息暴露给了LBS提供商。如何保护用户的位置信息不被潜在地泄露给LBS提供商, 对一个LBS...
采用信息抽取技术可以将用户感兴趣的信息提取出来,再发送给用户终端,有效地解决上述问题,信息抽取技术将是LBS系统中的一项重要应用。提出了一种基于信息抽取的从删.到WML的页面转换方法,首先标记少量的Web网页...
腾讯微群组主要是基于LBS和兴趣而建群组的移动社交app,上限人数为1000人,用户可通过QQ或微信号登陆后建群组,建立基于位置或兴趣的群组,直接导入QQ跟微信的好友入群,也可以搜索附近的人邀请入群,微群人数上限随...
高德LBS开放平台为开发者提供基于高德地图数据的各类服务接口,通过互联网、移动互联网向桌面和移动终端用户提供丰富的地图服务功能,如地图显示、标注、位置检索、驾车出行方案检索、公交查询、地址解析等,通过...
“KK 觅友”是全球首款基于地理位置并可以虚拟穿越地区的弹性社交软件。您可以通过KK认识周围及其他地区您感兴趣的人,查看对方的个人信息、位置及动态,并同TA互动聊天。通过KK觅友,用户可以快速找到互相吸引的...
POI是“Point of Interest”的缩写,可以翻译成“兴趣点”,也有些叫做“Point of Information”,即“信息点”。电子地图上一般用气泡图标来表示POI,像电子地图上的景点、政府机构、公司、商场、饭馆等,都是POI。...
基于位置的社交应用程序,为相似位置区域内的人们安排相似时间段内感兴趣的体育活动 功能 在列表或地图上显示事件 显示不同类型的运动 创建事件 评级参与者 登录和注册 参考库/SDK: 百度地图SDK: : 滑动...
越狱后必备下载利器,免费手机... 同步推2.0基于LBS地理位置和社交关系,可以关注附近的人和你感兴趣的应用达人,除了分享他们定制的个性专题外,也可以查看大家都在用什么好软件!掌上精彩无限,同步推让你2013年不再
这种被称为 LBS(Location Based Service,基于位置的服务)类网站正成为风险投资的兴趣点。 智能手机早已不再只是商务瑞选择,它正变得越来越好玩。社交手机会告诉你想知道的有关来电者的一切信息。游戏手机则...