php实现mysql计算经纬度坐标距离的筛选附近范围POI的解决方案

本文涉及的产品
RDSClaw,2核4GB
RDS MySQL DuckDB 分析主实例,基础系列 4核8GB
RDS MySQL DuckDB 分析主实例,集群系列 4核8GB
简介: php实现mysql计算经纬度坐标距离的筛选附近范围POI的解决方案

经测试,按照该公式和腾讯地图经纬度距离计算,精度基本上是匹配的,返回的单位为:km。

地球半径采用的是6378.137千米。

  //选取小余800km的经纬度;
  public function getNear()
  {
    global $db, $res;
    dbc();
    $city_lat = "29.800712";
    $city_lng = "121.556758";
    $sql = "select toilet_id,toilet_name,toilet_address,toilet_url,toilet_lon,toilet_lat,ROUND((6378.137 * acos (cos (radians($city_lat) )* cos(radians( toilet_lat ) )* cos(radians( toilet_lon ) - radians($city_lng) )+ sin (radians($city_lat) )* sin(radians( toilet_lat ))))) AS distance from " . $db->table('toilet') . " HAVING distance < 800 ORDER BY distance ASC";
    $row         = $db->queryall($sql);
    $res["data"] = $row;
    die(json_encode_lockdata($res));
  }


{
    "err": "",
    "res": "",
    "data": [
        {
            "toilet_id": "5",
            "toilet_name": "单县东大医院",
            "toilet_address": "山东省菏泽市单县舜师东路1号",
            "toilet_url": "upload/preview/2020-11/3e29ff1cb9f04edc889f19962e05cf57.jpg",
            "toilet_lon": "116.109825",
            "toilet_lat": "34.775480",
            "distance": "754"
        },
        {
            "toilet_id": "1",
            "toilet_name": "舜师路中段公厕",
            "toilet_address": "山东省菏泽市单县舜师路",
            "toilet_url": "upload/nopic.jpg",
            "toilet_lon": "116.090331",
            "toilet_lat": "34.778643",
            "distance": "756"
        },
        {
            "toilet_id": "4",
            "toilet_name": "文化路公厕",
            "toilet_address": "单县舜师路与文化路交叉口西南方向20米",
            "toilet_url": "upload/preview/2020-11/627365751e1c62eb98d8f4ae472efc81.jpg",
            "toilet_lon": "116.087551",
            "toilet_lat": "34.780302",
            "distance": "756"
        }
    ]
}

Done !


相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。 &nbsp; 相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情:&nbsp;https://www.aliyun.com/product/rds/mysql&nbsp;
相关文章
|
7月前
|
关系型数据库 MySQL PHP
PHP和Mysql前后端交互效果实现
本文介绍了使用PHP连接MySQL数据库的基本函数及其实现案例。内容涵盖数据库连接、选择数据库、执行查询、获取结果等常用操作,并通过用户登录和修改密码的功能实例,展示了PHP与MySQL的交互过程及代码实现。
430 0
PHP和Mysql前后端交互效果实现
|
关系型数据库 MySQL 数据库连接
docker拉取MySQL后数据库连接失败解决方案
通过以上方法,可以解决Docker中拉取MySQL镜像后数据库连接失败的常见问题。关键步骤包括确保容器正确启动、配置正确的环境变量、合理设置网络和权限,以及检查主机防火墙设置等。通过逐步排查,可以快速定位并解决连接问题,确保MySQL服务的正常使用。
2628 82
|
12月前
|
关系型数据库 MySQL Linux
查看Linux、Apache、MySQL、PHP版本的技巧
以上就是查看Linux、Apache、MySQL、PHP版本信息的方法。希望这些信息能帮助你更好地理解和使用你的LAMP技术栈。
539 17
|
12月前
|
负载均衡 算法 关系型数据库
大数据新视界--大数据大厂之MySQL数据库课程设计:MySQL集群架构负载均衡故障排除与解决方案
本文深入探讨 MySQL 集群架构负载均衡的常见故障及排除方法。涵盖请求分配不均、节点无法响应、负载均衡器故障等现象,介绍多种负载均衡算法及故障排除步骤,包括检查负载均衡器状态、调整算法、诊断修复节点故障等。还阐述了预防措施与确保系统稳定性的方法,如定期监控维护、备份恢复策略、团队协作与知识管理等。为确保 MySQL 数据库系统高可用性提供全面指导。
|
监控 Java 关系型数据库
Spring Boot整合MySQL主从集群同步延迟解决方案
本文针对电商系统在Spring Boot+MyBatis架构下的典型问题(如大促时订单状态延迟、库存超卖误判及用户信息更新延迟)提出解决方案。核心内容包括动态数据源路由(强制读主库)、大事务拆分优化以及延迟感知补偿机制,配合MySQL参数调优和监控集成,有效将主从延迟控制在1秒内。实际测试表明,在10万QPS场景下,订单查询延迟显著降低,超卖误判率下降98%。
505 5
|
7月前
|
缓存 关系型数据库 BI
使用MYSQL Report分析数据库性能(下)
使用MYSQL Report分析数据库性能
495 158
|
7月前
|
关系型数据库 MySQL 数据库
自建数据库如何迁移至RDS MySQL实例
数据库迁移是一项复杂且耗时的工程,需考虑数据安全、完整性及业务中断影响。使用阿里云数据传输服务DTS,可快速、平滑完成迁移任务,将应用停机时间降至分钟级。您还可通过全量备份自建数据库并恢复至RDS MySQL实例,实现间接迁移上云。
|
7月前
|
关系型数据库 MySQL 数据库
阿里云数据库RDS费用价格:MySQL、SQL Server、PostgreSQL和MariaDB引擎收费标准
阿里云RDS数据库支持MySQL、SQL Server、PostgreSQL、MariaDB,多种引擎优惠上线!MySQL倚天版88元/年,SQL Server 2核4G仅299元/年,PostgreSQL 227元/年起。高可用、可弹性伸缩,安全稳定。详情见官网活动页。
1247 152
|
7月前
|
关系型数据库 MySQL 数据库
阿里云数据库RDS支持MySQL、SQL Server、PostgreSQL和MariaDB引擎
阿里云数据库RDS支持MySQL、SQL Server、PostgreSQL和MariaDB引擎,提供高性价比、稳定安全的云数据库服务,适用于多种行业与业务场景。
924 156
|
7月前
|
缓存 监控 关系型数据库
使用MYSQL Report分析数据库性能(中)
使用MYSQL Report分析数据库性能
521 156