PHP 技巧 附近的人功能實現

2021-10-05 03:24:17 字數 985 閱讀 5047

授權獲取使用者的經緯度並存入資料庫(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

) * cos(lat * 3.1415926535898 / 180) * pow(

sin(

3.1415926535898 * (" . $_get['lng'] . " - lng) / 360),2

))

),decimal (10, 2)

) as distance

from

`user`

where

lat > 0 and lng > 0

order by

distance asc

limit 0, 10

查詢的資料過濾掉指點距離的資料即可,也可使用 where 條件篩選,但 as 的別名不可以作為 條件字段,需要又將計算的語句再寫一遍。tp框架為例

2. thinkphp5+

// 獲取附近 1000m 的人

public function getlists()

$geosql = <",0)

->where($geosql . " < 1000")

->page($_get["page"] ?? 1 , $_get["limit"] ?? 10)

->orderraw("distance asc")

->select();

return $rs;

}

PHP 附近的人

思路 首先,我們知道自己的經緯度,知道自己要搜尋的範圍 半徑 我們就可以得到乙個已自己為中心的範圍圈。然後計算出範圍內的經緯度,也就是對於的附近的人。第一步 我們先宣告乙個函式,用作計算經緯度的範圍 根據經緯度和半徑計算出範圍 param string lat 緯度 param string lng...

nodejs mongo 實現搜附近的人

參考 用mongo作為儲存,來實現搜尋附近的人具有先天的優勢,mongodb原生支援地理位置索引,可以直接用於位置距離計算和查詢。另外,它也是如今最流行的nosql資料庫之一,除了能夠很好地支援地理位置計算之外,還擁有諸如面向集合儲存 模式自由 高效能 支援複雜查詢 支援完全索引等等特性。先看一下我...

PHP查詢附近的人及其距離的實現方法

distance 1 範圍 單位千公尺 lat 113.873643 lng 22.573969 define earth radius 6371 地球半徑,平均半徑為6371km dlng 2 asin sin qioutilidistance 2 earth radius cos deg2rad...