gpt4 book ai didi

php - 在 PHP/MySQL/Android 上比较单个用户位置与多个用户位置的方法

转载 作者:行者123 更新时间:2023-11-29 02:54:37 25 4
gpt4 key购买 nike

我有一个开发中的应用程序显示用户列表,按一些标准排序,例如最新成员 (DESC created_at) 和离您最近的成员(ASC 距离)。我可以很容易地在我的应用程序上显示这个排序的数据,在 PHP 文件上使用 MySQL 语句编写额外的代码,比如排序 DESC created_at:

$result = mysql_query("SELECT * from users ORDER BY created_at DESC;");

但是,如果我要获取与用户的距离,事情就会变得有点困惑。首先想到的是:

  1. 如果我没有距离列,如何将其转换为 SQL。我可以使用从 lat(纬度)列和 lng(经度)列计算的值创建一个临时列吗?
  2. 在我这样做之后,我将如何比较一个用户的距离与多个用户的距离?对于最终数据要根据其他用户的距离进行排序?

我找到了一个非常合理的方程来根据纬度和经度数据计算距离 here看起来像这样:

SELECT id, ( 3959 * acos( cos( radians(37) ) * cos( radians( lat ) ) * cos( radians( lng ) - radians(-122) ) + sin( radians(37) ) * sin( radians( lat ) ) ) ) 
AS distance FROM markers
HAVING distance < 25 ORDER BY distance LIMIT 0 , 20;

为此,我非常感谢任何更好的替代方案。非常感谢您!

json 对象:

{"users":[{"uid":"16","username":"easy3","picture":"071911.jpg","lat":"4.059912","lng":"100.123804","type_of_tradesman":"Architect, Electrician, Joiner","created_at":"2015-07-23 13:05:40"},
{"uid":"17","username":"easy4","picture":"071911.jpg","lat":"8.059912","lng":"110.008804","type_of_tradesman":"None, Bricklayer, DIY Handyman, Ground Worker, Labourer, Plant Operator","created_at":"2015-07-23 13:15:02"},
{"uid":"18","username":"easy5","picture":"071911.jpg","lat":"8.051232","lng":"100.008804","type_of_tradesman":"Bricklayer, DIY Handyman, Ground Worker, Labourer, Plant Operator","created_at":"2015-07-23 13:23:16"},
{"uid":"19","username":"easy6","picture":"173234.jpg","lat":"8.000912","lng":"116.077805","type_of_tradesman":"Electrician, Joiner, Labourer, Plumber, Scaffolder","created_at":"2015-07-23 13:24:09"}]}

最佳答案

在给定的示例中,37 和 -122 是您要与每一行进行比较的坐标。因此,您必须将这些传递给查询(而不是使用 37/-122)以便它可以计算它。

如果您有大量数据并且担心性能受到影响 this stackoverflow 问题和答案值得一读。

警告: mysql_query已弃用(甚至从 PHP >= 7.0.0 中删除)。使用类似 mysqli_query 的东西相反。

关于php - 在 PHP/MySQL/Android 上比较单个用户位置与多个用户位置的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32034753/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com