首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

搜索附近人和商铺功能

越来越多Android应用都加入了“附近的人”功能,比如微信、陌陌、淘宝等,今天分享一个demo,简单来实现这一功能。...主要原理为:手机端上传gps数据到服务器,服务器从数据库中查询其他用户gps数据,分别计算2个pgs之间距离,然后将计算好数据返回给手机,手机进行展示。...this, LoginActivity.class ); startActivity(intent); } .... } 查看附近的人...点击ActionBar上附近的人,便会显示从服务器获取到用户信息(目前服务器是把所有用户信息全部返回): 请求网络使用是Google在IO大会上才推出Volley....计算距离逻辑是从Android提供接口(Location.distanceBetween)中拔来,应该是最精确方法了 public static double computeDistance(

90350
您找到你想要的搜索结果了吗?
是的
没有找到

利用 Redis 实现“附近的人”功能

而 Redis 另辟蹊径,结合其有序队列 ZSET 以及 GEOHASH 编码,实现了空间搜索功能,且拥有极高运行效率。 本文将从源码角度对其算法原理进行解析,并推算查询时间复杂度。...要提供完整附近的人”服务,最基本是要实现“增”、“删”、“查”功能。 以下将分别进行介绍,其中会重点对查询功能进行解析。...其中,组合使用 GEOADD 和 GEORADIUS 可实现“附近的人”中“增”和“查”基本功能。 要实现微信中“附近的人”功能,可直接使用 GEORADIUSBYMEMBER 命令。...不过本质上,GEORADIUSBYMEMBER=GEOPOS+GEORADIUS,即先查找用户位置再通过该位置搜索附近满足位置相互距离条件其他用户对象。...并可推算出 Redis 中 GEORADIUS 查找附近的人功能,时间复杂度为:O(N+log(M))。 其中 N 为指定半径范围内位置元素数量,而 M 则是被九宫格圈住计算距离元素数量。

97320

如何使用redis实现附近功能

当两个元素相距不是很远,可以直接用勾股定理就能算出元素之间距离,但是当我们坐标是经纬度这种数据时,使用勾股定理就不容易计算了,那么如何计算两个经纬度之间距离呢?如何筛选附近的人呢?...假如我们现在想要获取(x0,y0)坐标 附近为r元素,可以这样去查询: select id from pos where x0-r < x <x0+r and y0-r <y <y0+r 但是把所有数据全部放到数据库中...业界比较通用计算距离方法是geohsh算法,刚好redis也支持这种算法 ?...redis如何支持 在redis中,geo将二维经纬度使用52位整数进行编码,然后放入zset集合中,zsetvalue是key,scroe存储是52位整数值,然后通过score排序,算出附近的人...获取元素hash值 geohash anhuiprovince hefei 获取附近元素 georadiusbymember key member radius m|km|ft|mi [WITHCOORD

77610

用sphinx给PHP加个给力搜索功能

最近工作上需要实现搜索功能,尝试了几种方案。虽然最终线上部署还是最low方案,但是中间过程还是比较有意思。业务上根据关键字查找内容。关键字出处多来源于标题,文章描述等。...生成关键字表,使用关键字表进行查询 对数据内容标题和内容进行分词,把各个分词结果关联该内容。查询时候根据查询关键字进行匹配。因为不是模糊搜索,所以可以使用数据库索引,加快搜索速度。...但是如果输入"国会"则无法搜索到内容。如果多个词同时匹配,则需要使用in查询,然后筛选出同时出现内容。 所以这种生成关键字方式,虽然查询速度上会比直接使用like查询快,但是业务逻辑会比较复杂。...使用sphinx作为搜索引擎 sphinx支持全文搜索,所以在sphinx中查询到关键字对应内容id之后再通过数据库获取内容全部数据。...但是sphinx需要额外服务(也可以使用sphinxse,不过需要重新编译mysql),同时索引页会带来内存和储存空间上开销,同时也会涉及到索引实时更新问题。

96840

小程序里附近的人功能实现,云开发数据库实现附近的人,附近多少公里内好友

文末有源码 最近好多同学问石头哥附近的人如何实现。今天呢,就借助这篇文章,给大家做一个系统解答。...接下来就教大家如何实现附近位置。 一,创建数据 首先我们查询附近的人时候,需要先有附近位置,也就是经纬度。这里我以几个城市经纬度为例。...二,查找附近的人 我们查找附近的人,肯定是想按照排序由近到远显示附近的人在地图上,所以这里我们就要用到geoNear做聚合查询。...,size_16,color_FFFFFF,t_70] 这个距离在做附近的人时很重要。...this.setData({ markers }) }) } }) } }) 好了,到这里就带大家完整实现了地图上显示附近功能

96630

Google 将于年底关闭 Android 附近通知功能

三年前, 我们向 Android 平台引入了附近通知 (Nearby Notifications) 功能,它能根据周边设施和服务信息,为用户推荐应用和内容。...我们推出该功能初衷是为了向用户主动提供有用信息,比如说开发者可以利用这项技术告知用户附近可用免费 Wi-Fi, 博物馆讲解和公交车到站时间。 我们在开发和发布这项功能过程当中收获了丰富经验。...用户可以通过设置过滤条件或者关闭 “附近通知” 来抵制垃圾信息,而且我们也已经对发送给用户内容进行了十分严格限制,尤其是那些通过通知推送内容。但是,我们最终还是判定这些通知未能达到应有标准。...因此,我们决定从 2018 年 12 月 6 日开始正式停用附近通知这项功能。 Android 用户面临影响 Android 用户将不会再收到任何附近通知。...您可以继续访问 beacon 仪表盘,或者通过调用 Proximity Beacons API 在应用内实现类似于附近通知近场交互功能

91320

附近小程序」增加新分类 | 小程序搜索大升级

轻松一刻 漫画来自于西乔《神秘程序员们》 01 「附近小程序」增加新分类,「门店小程序」增加红色「店」字标志 附近小程序在几个月前曾经被爆出在分类栏目上多出“餐饮美食”一览,当时一经推出,备受关注...而且,如果小程序支持「微信会员卡」功能,那么在「附近小程序」中,这个小程序也将会被标注「会员卡」字样;门店小程序也会在小程序名称后,增加红色「店」字标志进行标注。...02 小程序搜索大升级 与「搜一搜」一样,小程序列表里搜索框,也可以搜索小程序里内容。点击搜索结果,还能直接进入小程序。...例如,搜索电影名称,可以找到「猫眼电影」小程序内搜索结果;搜索「地名+机票」,也可以搜索同程旅游旗下小程序机票结果等。...此外,在小程序列表里搜索功能搜索小程序部分关键词时,将不会搜到门店小程序。只有当用户完整输入门店小程序名称,搜索结果中才会有相应门店小程序出现。

1.7K80

利用RedisGeo功能实现查找附近位置

从3.2版本开始它开始提供了GEO能力,用来实现诸如附近位置、计算距离等这类依赖于地理位置信息功能。...GEORADIUS 以给定经纬度为中心, 找出某一半径内元素 GEOADD 将指定地理空间位置(纬度、经度、名称)添加到指定 key 中 GEORADIUSBYMEMBER 找出位于指定范围内元素...WITHHASH 返回位置 52 位精度Geohash值,非必选。这个我反正很少用,可能其它一些偏向底层LBS应用服务需要这个。 COUNT 返回符合条件位置元素数量,非必选。...String, String> geoOps = redisTemplate.boundGeoOps(GEO_KEY); geoOps.add(points); }; } 3.3 查询附近特定位置...总结 今天我们使用RedisGeo特性实现了常见附近地理信息查询需求,简单易上手。其实使用另一个Nosql数据库MongoDB也可以实现。在数据量比较小情况下Redis已经能很好满足需要。

2.3K50

Redis 到底是怎么实现“附近的人”这个功能

而Redis另辟蹊径,结合其有序队列zset以及geohash编码,实现了空间搜索功能,且拥有极高运行效率。 本文将从源码角度对其算法原理进行解析,并推算查询时间复杂度。...要提供完整附近的人”服务,最基本是要实现“增”、“删”、“查”功能。以下将分别进行介绍,其中会重点对查询功能进行解析。...其中,组合使用GEOADD和GEORADIUS可实现“附近的人”中“增”和“查”基本功能。 要实现微信中“附近的人”功能,可直接使用GEORADIUSBYMEMBER命令。...不过本质上,GEORADIUSBYMEMBER = GEOPOS + GEORADIUS,即先查找用户位置再通过该位置搜索附近满足位置相互距离条件其他用户对象。...并可推算出Redis中GEORADIUS查找附近的人功能,时间复杂度为:O(N+log(M)) 其中N为指定半径范围内位置元素数量,而M则是被九宫格圈住计算距离元素数量。

77920

利用RedisGeo功能实现查找附近

从3.2版本开始它开始提供了GEO能力,用来实现诸如附近位置、计算距离等这类依赖于地理位置信息功能。...GEORADIUS 以给定经纬度为中心, 找出某一半径内元素 GEOADD 将指定地理空间位置(纬度、经度、名称)添加到指定 key 中 GEORADIUSBYMEMBER 找出位于指定范围内元素...WITHHASH 返回位置 52 位精度Geohash值,非必选。这个我反正很少用,可能其它一些偏向底层LBS应用服务需要这个。 COUNT 返回符合条件位置元素数量,非必选。...String, String> geoOps = redisTemplate.boundGeoOps(GEO_KEY); geoOps.add(points); }; } 3.3 查询附近特定位置...总结 今天我们使用RedisGeo特性实现了常见附近地理信息查询需求,简单易上手。其实使用另一个Nosql数据库MongoDB也可以实现。在数据量比较小情况下Redis已经能很好满足需要。

1.4K30

Redis 到底是怎么实现“附近的人”这个功能

而Redis另辟蹊径,结合其有序队列zset以及geohash编码,实现了空间搜索功能,且拥有极高运行效率。 本文将从源码角度对其算法原理进行解析,并推算查询时间复杂度。...要提供完整附近的人”服务,最基本是要实现“增”、“删”、“查”功能。以下将分别进行介绍,其中会重点对查询功能进行解析。...其中,组合使用GEOADD和GEORADIUS可实现“附近的人”中“增”和“查”基本功能。 要实现微信中“附近的人”功能,可直接使用GEORADIUSBYMEMBER命令。...不过本质上,GEORADIUSBYMEMBER = GEOPOS + GEORADIUS,即先查找用户位置再通过该位置搜索附近满足位置相互距离条件其他用户对象。...并可推算出Redis中GEORADIUS查找附近的人功能,时间复杂度为:O(N+log(M)) 其中N为指定半径范围内位置元素数量,而M则是被九宫格圈住计算距离元素数量。

89930

Redis 到底是怎么实现“附近的人”这个功能呢?

而Redis另辟蹊径,结合其有序队列zset以及geohash编码,实现了空间搜索功能,且拥有极高运行效率。本文将从源码角度对其算法原理进行解析,并推算查询时间复杂度。...要提供完整附近的人”服务,最基本是要实现“增”、“删”、“查”功能。以下将分别进行介绍,其中会重点对查询功能进行解析。...其中,组合使用GEOADD和GEORADIUS可实现“附近的人”中“增”和“查”基本功能。要实现微信中“附近的人”功能,可直接使用GEORADIUSBYMEMBER命令。...不过本质上,GEORADIUSBYMEMBER = GEOPOS + GEORADIUS,即先查找用户位置再通过该位置搜索附近满足位置相互距离条件其他用户对象。...并可推算出Redis中GEORADIUS查找附近的人功能,时间复杂度为:O(N+log(M)),其中N为指定半径范围内位置元素数量,而M则是被九宫格圈住计算距离元素数量。

1.1K10

看用 Redis 如何实现微信「​附近的人」​功能

而Redis另辟蹊径,结合其有序队列zset以及geohash编码,实现了空间搜索功能,且拥有极高运行效率。 本文将从源码角度对其算法原理进行解析,并推算查询时间复杂度。...要提供完整附近的人”服务,最基本是要实现“增”、“删”、“查”功能。以下将分别进行介绍,其中会重点对查询功能进行解析。...其中,组合使用GEOADD和GEORADIUS可实现“附近的人”中“增”和“查”基本功能。 要实现微信中“附近的人”功能,可直接使用GEORADIUSBYMEMBER命令。...不过本质上,GEORADIUSBYMEMBER = GEOPOS + GEORADIUS,即先查找用户位置再通过该位置搜索附近满足位置相互距离条件其他用户对象。...并可推算出Redis中GEORADIUS查找附近的人功能,时间复杂度为:O(N+log(M)) 其中N为指定半径范围内位置元素数量,而M则是被九宫格圈住计算距离元素数量。

89950
领券