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