越来越多的Android应用都加入了“附近的人”的功能,比如微信、陌陌、淘宝等,今天分享一个demo,简单的来实现这一功能。...主要原理为:手机端上传gps数据到服务器,服务器从数据库中查询其他用户的gps数据,分别计算2个pgs之间的距离,然后将计算好的数据返回给手机,手机进行展示。...this, LoginActivity.class ); startActivity(intent); } .... } 查看附近的人...点击ActionBar上的附近的人,便会显示从服务器获取到的用户信息(目前服务器是把所有用户信息全部返回): 请求网络使用的是Google在IO大会上才推出的Volley....计算距离的逻辑是从Android的提供的接口(Location.distanceBetween)中拔来的,应该是最精确的方法了 public static double computeDistance(
我这个功能就是用视图动画来实现的。老规矩先看一下效果图 效果图 实现思路 用的是一个缩放的动画,还有一个渐变的动画来实现的,放大的时候透明度逐渐变弱。...细心的你一定看到有4个圆环,没错我这里用了4个ImageView,来执行这个这个组合动画,只不过每个View执行的时候,延迟一些时间。 上代码 (布局文件) <?
而 Redis 另辟蹊径,结合其有序队列 ZSET 以及 GEOHASH 编码,实现了空间搜索功能,且拥有极高的运行效率。 本文将从源码角度对其算法原理进行解析,并推算查询时间复杂度。...要提供完整的“附近的人”服务,最基本的是要实现“增”、“删”、“查”的功能。 以下将分别进行介绍,其中会重点对查询功能进行解析。...其中,组合使用 GEOADD 和 GEORADIUS 可实现“附近的人”中“增”和“查”的基本功能。 要实现微信中“附近的人”功能,可直接使用 GEORADIUSBYMEMBER 命令。...不过本质上,GEORADIUSBYMEMBER=GEOPOS+GEORADIUS,即先查找用户位置再通过该位置搜索附近满足位置相互距离条件的其他用户对象。...并可推算出 Redis 中 GEORADIUS 查找附近的人功能,时间复杂度为:O(N+log(M))。 其中 N 为指定半径范围内的位置元素数量,而 M 则是被九宫格圈住计算距离的元素的数量。
最近工作上需要实现搜索功能,尝试了几种方案。虽然最终线上部署的还是最low的方案,但是中间的过程还是比较有意思的。业务上根据关键字查找内容。关键字的出处多来源于标题,文章描述等。...生成关键字表,使用关键字表进行查询 对数据内容的标题和内容进行分词,把各个分词结果关联该内容。查询的时候根据查询关键字进行匹配。因为不是模糊搜索,所以可以使用数据库的索引,加快搜索速度。...但是如果输入"国会"则无法搜索到内容。如果多个词同时匹配,则需要使用in查询,然后筛选出同时出现的内容。 所以这种生成关键字的方式,虽然查询速度上会比直接使用like查询快,但是业务逻辑会比较复杂。...使用sphinx作为搜索引擎 sphinx支持全文搜索,所以在sphinx中查询到关键字对应内容id之后再通过数据库获取内容的全部数据。...但是sphinx需要额外的服务(也可以使用sphinxse,不过需要重新编译mysql),同时索引页会带来内存和储存空间上的开销,同时也会涉及到索引实时更新的问题。
当两个元素相距不是很远,可以直接用勾股定理就能算出元素之间的距离,但是当我们的坐标是经纬度这种数据时,使用勾股定理就不容易计算了,那么如何计算两个经纬度之间的距离呢?如何筛选附近的人呢?...假如我们现在想要获取(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集合中,zset的value是key,scroe存储的是52位的整数值,然后通过score排序,算出附近的人...获取元素hash值 geohash anhuiprovince hefei 获取附近的元素 georadiusbymember key member radius m|km|ft|mi [WITHCOORD
这里假设要实现的是“附近的地铁站”功能,key为list,member为地铁站id 首先,你需要在redis里维护一个geo的列表(本质上是sorted set),当每个地铁站的经纬度有更新时,就使用...#地铁站id=1 #顺便提一下,相同key,member,不同经纬度,GEOADD会自动更新的 127.0.0.1:6379> GEOADD list CH 13.361389 38.115556 "...1" 列表接口的实现 客户端会传一个经纬度,页码,每页条数,关键词(搜索后排序先不考虑) 生成模拟数据 $redis = new Redis(); $redis->connect("docker-redis
--搜索功能--> <!...php $keywords=$_POST['keywords']; $link=mysqli_connect('localhost','root','','a'); //然后是指定php链接数据库的字符集...php } ?
文末有源码 最近好多同学问石头哥附近的人如何实现。今天呢,就借助这篇文章,给大家做一个系统的解答。...接下来就教大家如何实现附近的位置。 一,创建数据 首先我们查询附近的人的时候,需要先有附近人的位置,也就是经纬度。这里我以几个城市的经纬度为例。...二,查找附近的人 我们查找附近的人,肯定是想按照排序由近到远的显示附近的人在地图上,所以这里我们就要用到geoNear做聚合查询。...,size_16,color_FFFFFF,t_70] 这个距离在做附近的人时很重要的。...this.setData({ markers }) }) } }) } }) 好了,到这里就带大家完整的实现了地图上显示附近人的功能了
轻松一刻 漫画来自于西乔《神秘的程序员们》 01 「附近的小程序」增加新分类,「门店小程序」增加红色「店」字标志 附近的小程序在几个月前曾经被爆出在分类栏目上多出“餐饮美食”一览,当时一经推出,备受关注...而且,如果小程序支持「微信会员卡」功能,那么在「附近的小程序」中,这个小程序也将会被标注「会员卡」字样;门店小程序也会在小程序名称后,增加红色的「店」字标志进行标注。...02 小程序搜索大升级 与「搜一搜」一样,小程序列表里的搜索框,也可以搜索小程序里的内容。点击搜索结果,还能直接进入小程序。...例如,搜索电影名称,可以找到「猫眼电影」小程序内的搜索结果;搜索「地名+机票」,也可以搜索同程旅游旗下小程序的机票结果等。...此外,在小程序列表里的搜索功能搜索小程序部分关键词时,将不会搜到门店小程序。只有当用户完整输入门店小程序的名称,搜索结果中才会有相应的门店小程序出现。
从3.2版本开始它开始提供了GEO能力,用来实现诸如附近位置、计算距离等这类依赖于地理位置信息的功能。...GEORADIUS 以给定的经纬度为中心, 找出某一半径内的元素 GEOADD 将指定的地理空间位置(纬度、经度、名称)添加到指定的 key 中 GEORADIUSBYMEMBER 找出位于指定范围内的元素...WITHHASH 返回位置的 52 位精度的Geohash值,非必选。这个我反正很少用,可能其它一些偏向底层的LBS应用服务需要这个。 COUNT 返回符合条件的位置元素的数量,非必选。...String, String> geoOps = redisTemplate.boundGeoOps(GEO_KEY); geoOps.add(points); }; } 3.3 查询附近的特定位置...总结 今天我们使用Redis的Geo特性实现了常见的附近的地理信息查询需求,简单易上手。其实使用另一个Nosql数据库MongoDB也可以实现。在数据量比较小的情况下Redis已经能很好的满足需要。
三年前, 我们向 Android 平台引入了附近通知 (Nearby Notifications) 功能,它能根据周边设施和服务信息,为用户推荐应用和内容。...我们推出该功能的初衷是为了向用户主动提供有用的信息,比如说开发者可以利用这项技术告知用户附近可用的免费 Wi-Fi, 博物馆讲解和公交车到站时间。 我们在开发和发布这项功能的过程当中收获了丰富的经验。...用户可以通过设置过滤条件或者关闭 “附近通知” 来抵制垃圾信息,而且我们也已经对发送给用户的内容进行了十分严格的限制,尤其是那些通过通知推送的内容。但是,我们最终还是判定这些通知未能达到应有标准。...因此,我们决定从 2018 年 12 月 6 日开始正式停用附近通知这项功能。 Android 用户面临的影响 Android 用户将不会再收到任何附近通知。...您可以继续访问 beacon 仪表盘,或者通过调用 Proximity Beacons API 在应用内实现类似于附近通知的近场交互功能。
php+mysql实现搜索关键词功能 实现方式如下: SELECT * FROM test where tittle like '%1%' //此段为sql语句,从test这个表中,查找出含有1的tittle...字段 实现搜索,我们可以用表单,get传输数据,传输需要模糊搜索的内容。...$myrow['key']; echo ' '; 通过如上操作,我们可以得到形如下方的输出内容,达到搜索的目的 本文共 126 个字数,平均阅读时长 ≈ 1分钟
本文实例讲述了PHP实现关键字搜索后描红功能。...分享给大家供大家参考,具体如下: 在刚开始学习php的时候,就对搜索过后的关键字描红感到好奇,但是这几天在巩固php基础的时候,就发现原来这样的效果实现并不难。按照惯例,首先给大家看看效果图吧。...php if(!...php } }else{ echo "很遗憾,没有找到书籍"; } ?...,用str_ireplace()函数将其中的关键字文字替换成带有红色的文字,就实现了关键字描红的效果。
而Redis另辟蹊径,结合其有序队列zset以及geohash编码,实现了空间搜索功能,且拥有极高的运行效率。 本文将从源码角度对其算法原理进行解析,并推算查询时间复杂度。...要提供完整的“附近的人”服务,最基本的是要实现“增”、“删”、“查”的功能。以下将分别进行介绍,其中会重点对查询功能进行解析。...其中,组合使用GEOADD和GEORADIUS可实现“附近的人”中“增”和“查”的基本功能。 要实现微信中“附近的人”功能,可直接使用GEORADIUSBYMEMBER命令。...不过本质上,GEORADIUSBYMEMBER = GEOPOS + GEORADIUS,即先查找用户位置再通过该位置搜索附近满足位置相互距离条件的其他用户对象。...并可推算出Redis中GEORADIUS查找附近的人功能,时间复杂度为:O(N+log(M)) 其中N为指定半径范围内的位置元素数量,而M则是被九宫格圈住计算距离的元素的数量。
代码量很少,但是实现了功能,非常的简单。...//echo $data; echo "{\\"s\\":$s,\\"data\\":$data}"; } } 比较两个地点的距离
而Redis另辟蹊径,结合其有序队列zset以及geohash编码,实现了空间搜索功能,且拥有极高的运行效率。本文将从源码角度对其算法原理进行解析,并推算查询时间复杂度。...要提供完整的“附近的人”服务,最基本的是要实现“增”、“删”、“查”的功能。以下将分别进行介绍,其中会重点对查询功能进行解析。...其中,组合使用GEOADD和GEORADIUS可实现“附近的人”中“增”和“查”的基本功能。要实现微信中“附近的人”功能,可直接使用GEORADIUSBYMEMBER命令。...不过本质上,GEORADIUSBYMEMBER = GEOPOS + GEORADIUS,即先查找用户位置再通过该位置搜索附近满足位置相互距离条件的其他用户对象。...并可推算出Redis中GEORADIUS查找附近的人功能,时间复杂度为:O(N+log(M)),其中N为指定半径范围内的位置元素数量,而M则是被九宫格圈住计算距离的元素的数量。
使用者可以发布地址编码,既能表明自己位于北海公园附近,又不至于暴露自己的精确坐标,有助于隐私保护。 第三,编码的前缀可以表示更大的区域。...例如wx4g0ec1,它的前缀wx4g0e表示包含编码wx4g0ec1在内的更大范围。 这个特性可以用于附近地点搜索。...Geohash比直接用经纬度的高效很多。 用途: 移动互联网,lbs可以说是一个基础应用,geohash对于解决附近地点搜索提供了一个有效的解决方案。...($page,100)->field('id,name,createtime,geohash,latitude,longitude')->select(); 配合数据就达到了搜索附近工作室的效果 小技巧...geohash实现附近的工作室,php函数实现-tp5
领取专属 10元无门槛券
手把手带您无忧上云