我想实现一个用户系统,对系统的要求之一就是找到你附近的其他用户。
位置将由国家,但不会被过滤的城市,使用户可以得到来自同一个国家,但来自不同城市的其他用户。
现在的问题是如何计算的城市之间的距离? 它没有100%准确,但它必须给予一定的优先级更接近用户。
将谷歌中的地理位置API将满足这些要求? 有什么选择?
任何想法如何实现它没有一个非常繁重的计算?
我想询问它的国家和城市的用户只需在他的个人资料编写的,并得到它的地理位置,从它的IP或进口含有所有城市和他们的地理位置数据库。
请告诉我。
您可以使用半正矢公式来搜索数据库中的用户最近。
$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
城市的数据库,可以发现国地名