gpt4 book ai didi

php - 在数据库中存储用户的位置并为他找到最近的用户

转载 作者:行者123 更新时间:2023-12-02 22:12:34 24 4
gpt4 key购买 nike

我正在尝试实现一个用户系统,系统要求之一是找到您附近的其他用户。

位置将按国家而非城市进行过滤,因此用户可以获得来自同一国家但来自不同城市的其他用户。

问题是如何计算城市之间的距离?它不必 100% 准确,但必须优先考虑更接近的用户。

Google Geo location API 会满足这些要求吗?有哪些替代方案?

知道如何在不进行大量计算的情况下实现它吗?

我想问用户它的国家和城市只是为了在他的个人资料中写入,并从它的 IP 中获取它的地理位置,或者导入一个包含所有城市及其地理位置的数据库。

请指导我。

最佳答案

您可以使用 Haversine在数据库中搜索最近用户的公式。

$stmt = $dbh->prepare("SELECT  name, lat, lng, ( 3959 * acos( cos( radians(?) ) * cos( radians( lat ) ) * cos( radians( lng ) - radians(?) ) + sin( radians(?) ) * sin( radians( lat ) ) ) ) AS distance FROM mytable HAVING distance < ? ORDER BY distance LIMIT 0 , 20");
// Assign parameters
$stmt->bindParam(1,$center_lat);//lat coordinate of user
$stmt->bindParam(2,$center_lng);//lng coordinate of user
$stmt->bindParam(3,$center_lat);
$stmt->bindParam(4,$radius);//Radius in miles

可以在 Geonames 找到城市数据库。

关于php - 在数据库中存储用户的位置并为他找到最近的用户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15010113/

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