在DB存储用户的位置,并找到最近的用户为他(Storing user's location

2019-07-20 08:14发布

我想实现一个用户系统,对系统的要求之一就是找到你附近的其他用户。

位置将由国家,但不会被过滤的城市,使用户可以得到来自同一个国家,但来自不同城市的其他用户。

现在的问题是如何计算的城市之间的距离? 它没有100%准确,但它必须给予一定的优先级更接近用户。

将谷歌中的地理位置API将满足这些要求? 有什么选择?

任何想法如何实现它没有一个非常繁重的计算?

我想询问它的国家和城市的用户只需在他的个人资料编写的,并得到它的地理位置,从它的IP或进口含有所有城市和他们的地理位置数据库。

请告诉我。

Answer 1:

您可以使用半正矢公式来搜索数据库中的用户最近。

$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 

城市的数据库,可以发现国地名



文章来源: Storing user's location in DB and find the nearest users for him