思路:
首先,我們知道自己的經緯度,知道自己要搜尋的範圍(半徑),我們就可以得到乙個已自己為中心的範圍圈。然後計算出範圍內的經緯度,也就是對於的附近的人。
第一步:我們先宣告乙個函式,用作計算經緯度的範圍:
/** * 根據經緯度和半徑計算出範圍
* @param string $lat 緯度
* @param string $lng 經度
* @param float $radius 半徑 單位公尺
* @return array 範圍陣列 */
function calcscope($lat, $lng, $radius
)
第二步:第一步中返回的陣列已經包含了 最大最小的經緯度, 那我們就以此為條件 ,去資料庫進行查詢。
提供sql語句,根據自己的框架進行修改
'select `字段` from `表名` where `latitude` < '.$scope['maxlat'].' and `latitude` > '.$scope['minlat'].' and `longitude` < '.$scope['maxlng'].' and `longitude` > '.$scope['minlng'];
第三步:獲取到附近的人的座標以後,我們還需要知道自己距離附近的人的距離是多少
/** * 獲取兩個經緯度之間的距離
* @param string $lat1 緯一
* @param string $lng1 經一
* @param string $lat2 緯二
* @param string $lng2 經二
* @return float 返回兩點之間的距離 */
function calcdistance($lat1, $lng1, $lat2, $lng2
)
到此,乙個簡單的附近的人的 程式就算是寫好了。可以根據自己的專案需求進行調整,如,執行效率,執行方式等等。
PHP 技巧 附近的人功能實現
授權獲取使用者的經緯度並存入資料庫 lng 字段 lat 字段 1.原生查詢 select convert 2 6378.137 asin sqrt pow sin 3.1415926535898 get lat lat 360 2 cos 3.1415926535898 get lat 180 c...
搜尋附近的人
地球半徑,單位公尺 private static double earth radius 6378137 根據提供的經度和緯度 以及半徑,取得此半徑內的最大最小經緯度 緯度 經度 半徑 公尺 public static double getaround double lat,double lon,i...
PHP查詢附近的人及其距離的實現方法
distance 1 範圍 單位千公尺 lat 113.873643 lng 22.573969 define earth radius 6371 地球半徑,平均半徑為6371km dlng 2 asin sin qioutilidistance 2 earth radius cos deg2rad...