我有一个用户数据库,每个用户都存储了相关的经度、纬度、半径(以 m 为单位)和 notificationID 值。
当用户登录我的应用程序时,我将检查他们的经度和纬度,并且我需要检索符合以下条件的通知 ID 列表:
用户 A 想要接收来自 1000m 半径内的通知。用户 B 想要接收来自 20000m 半径范围内的通知。用户 C 想要接收来自 5000m 半径范围内的通知。
因此,如果用户 C 发出推送通知,即使用户 A 实际上比用户 B 更接近用户 C,它也可能被用户 B 而不是用户 A 接收。
抱歉,如果不清楚,我发现很难解释。
我之前做过一个查询,它将返回某个范围内的坐标,例如 50m(下),但我正在努力解决的问题是计算每个人的个人半径,以及这与他们是否会收到一个来自其他用户的通知。
set @orig_lat= mysql_real_escape_string($_POST['Latitude']);
set @orig_lon=mysql_real_escape_string($_POST['Longitude']);
set @dist= mysql_real_escape_string($_POST['Distance']);
$Search_Query= "SELECT *,
3956 * 2 * ASIN(SQRT( POWER(SIN((@orig_lat -
abs(
dest.lat)) * pi()/180 / 2),2) + COS(@orig_lat * pi()/180 ) * COS(
abs
(dest.lat) * pi()/180) * POWER(SIN((@orig_lon – dest.lon) * pi()/180 / 2), 2) ))
as distance FROM hotels dest having distance < @distORDER BY distance limit 10";