一、准备

授权获取用户的经纬度并存入数据库(lng 字段、lat 字段)。

二、查询

1. 原生查询

SELECT*, CONVERT (2 * 6378.137 * ASIN(SQRT(POW(SIN(3.1415926535898 * (" . $_GET['lat'] . " - lat) / 360),2) + COS(3.1415926535898 * " . $_GET['lat'] . " / 180) * COS(lat * 3.1415926535898 / 180) * POW(SIN(3.1415926535898 * (" . $_GET['lng'] . " - lng) / 360),2))),DECIMAL (10, 2)) AS distance
FROM`user`
WHERElat > 0  AND lng > 0
ORDER BYdistance ASC
LIMIT 0, 10

查询的数据过滤掉指点距离的数据即可,也可使用 where 条件筛选,但 as 的别名不可以作为 条件字段,需要又将计算的语句再写一遍。TP框架为例

2. ThinkPHP5+

// 获取附近 1000m 的人
public function getLists(){$lat = $_GET["lat"] ?? 0;$lng = $_GET["lng"] ?? 0;if(!$lat || !$lng){return [];}$geoSql = <<<geo
CONVERT (2 * 6378.137 * ASIN(SQRT(POW(SIN(3.1415926535898 * (" . $lat . " - lat) / 360),2) + COS(3.1415926535898 * " . $lat . " / 180) * COS(lat * 3.1415926535898 / 180) * POW(SIN(3.1415926535898 * (" . $lng . " - lng) / 360),2))),DECIMAL (10, 2)
)
geo;$rs = User::field("*," . $geoSql . "as distance")->where("lng&lat",">",0)->where($geoSql . " < 1000")->page($_GET["page"] ?? 1 , $_GET["limit"] ?? 10)->orderRaw("distance asc")->select();return $rs;
}

PHP 技巧 * 附近的人功能实现相关推荐

  1. 手机技巧:被人忽视OTG功能怎么使用?复制文件到U盘的新方法

    手机技巧:被人忽视OTG功能怎么使用?复制文件到U盘的新方法 目前我们所购买的手机大部分都带有OTG功能,那么OTG到底是什么呢?好多人对OTG功能其实都是太过于了解的,那么我们如何正确的使用手机的O ...

  2. 在XMPP的JAVA开源实现Openfire中,增加LBS 附近的人功能

    1. XMPP协议 与 Openfire XMPP协议是IM领域的标准协议了,具体可参考  http://xmpp.org   及RFC6120,RFC6121,RFC6122等相关文档. http: ...

  3. Android端IM应用中的@人功能实现:仿微博、QQ、微信,零入侵、高可扩展

    本文由"猫爸iYao"原创分享,感谢作者. 1.引言 最近有个需求:评论@人(没错,就是IM聊天或者微博APP里的@人功能),就像下图这样: ▲ 微信群聊界面里的@人功能  ▲ Q ...

  4. 基于redis(v3.2+)实现“附近的人”功能

    背景介绍:目前随着电商.社交.游戏和代购等的流行,"附近的人"这一功能提供了一种便捷的方式允许同一地区或者一定距离范围内的用户进行相互交流的途径,一般都是在用户点击某个菜单或按钮时 ...

  5. java怎么实现查找n功能_java 实现微信搜索附近人功能

    最近给andorid做后台查询数据功能,有一个需求是模仿微信的查找附近人功能. 数据库中存储每个用户的经纬度信息及用户信息,通过当前用户传递过来的经纬度查询这个用户半径N公里以内的用户信息. 数据库表 ...

  6. Telegram附近的人功能存在安全风险,可被用于探测用户位置

    近日,有安全研究人员指出,使用著名加密聊天软件Telegram的"附近的人"功能可以暴露用户的确切位置,且该功能长期存在.要知道,Telegram作为一款高度匿名软件,一旦暴露所处 ...

  7. 如果实现类似微信附近的人功能

    如果实现类似微信附近的人功能: 第一种可以使用redis-geo扩展: 第二种可以使用mysql5.7的geo扩展: 第三种可以使用es的geo扩展 : 第四种可以使用百度的API或者微信的API: ...

  8. 如何在VR全景中嵌入AI数字人功能?打造云端体验感

    互联网产品的更新迭代是很快的,众多行业都会不断的上新产品,不久前我们推出了AI数字人讲解功能,那么如何在VR全景作品中嵌入这种功能呢?其实这些功能都是市场发展的需求,毕竟现在元宇宙的概念爆火也在无形之 ...

  9. java 开发安卓im_Android端IM应用中的@人功能实现:仿微博、QQ、微信,零入侵、高可扩展...

    本文由"猫爸iYao"原创分享,感谢作者. 1.引言 最近有个需求:评论@人(没错,就是IM聊天或者微博APP里的@人功能),就像下图这样: ▲ 微信群聊界面里的@人功能 ▲ QQ ...

最新文章

  1. 这个宝藏工具,给你一种黑客般的感觉
  2. Jmeter学习——11
  3. Py之pyserial:Python的pyserial库的简介、安装、使用方法之详细攻略
  4. Python中异常处理的用法
  5. Out of Hay
  6. mysql blob 比较_与MSSQL对比学习MYSQL的心得(四)--BLOB数据类型
  7. IOS UIScrollView 滚动视图的使用和文档
  8. ElasticSearch5.4X 搜索引擎查询java工具类
  9. html转义 在线,HTML转义工具 [Javascript版]
  10. 说出你的需求,我们AI给你写代码 | MIT新研究
  11. VSTS有Bug,分析数据库的维度和维度属性使用中文命名时候,作为报表参数会出错。虽然有解决办法但是头大。...
  12. Google Code Review 处理代码审查中的推回
  13. Ucenter通信原理
  14. 电路分析之正弦稳态电路的仿真与研究
  15. Python3 文档批量助手
  16. mac idea修改内存
  17. 网络安全---数字签名
  18. java pow_Java中Math.pow()的用法
  19. mysql数据库常用名词_【千寻】MySQL数据库名词注释(持续更新)
  20. 交游首款游戏曝光 《张狂交游》打破垂头交际

热门文章

  1. Glove 细节介绍
  2. 无线便携式脑电-smarting pro
  3. 【建议收藏】数据结构和算法面试题
  4. php swoole 视频直播_swoole如何实现直播
  5. 华为 oj java题库_华为OJ题目:刷题
  6. Android.mk入门教程
  7. Gbase存储过程详细教程
  8. YesPlayMusic 0.4.0中文版:一款mac用户必备的网易云音乐客户端
  9. Windows10安装Golang环境
  10. 5-29 止跌上涨中,关注明后两天能否创新高点