我的目标是在我的最新项目中创建一个功能,最好使用 PHP。当每个用户注册时,他们将输入他们的邮政编码。然后希望我将使用 Open Street Map 将其转换为纬度/经度。
无论如何,我希望能够找出位于当前用户附近的其他用户。我见过很多人使用 Haversine 公式,但这意味着用户查询了其他所有用户的详细信息以计算距离。我可以缓存它,但随着新用户的注册,它很快就会过时。
运行以下查询会对我的系统产生什么样的影响?
sql = "SELECT zipcode, ( 3959 * acos( cos( radians( {$coords['latitude']} ) )
* cos( radians( latitude ) ) * cos( radians( longitude )
- radians( {$coords['longitude']} ) )
+ sin( radians( {$coords['latitude']} ) ) * sin( radians( latitude ) ) ) )
AS distance FROM zipcodes HAVING distance <= {$radius} ORDER BY distance";
这是从某人的博客中提取的。
我没有任何关于注册率或用户数量的数据,因为它仍在开发中。
如果我能使用任何反馈或其他方法在特定范围内找到匹配的用户,我将不胜感激。