「附近的人」這樣的產(chǎn)品功能,你一定不陌生吧?
微信就有「附近的人」的功能,依托于位置信息,展示平臺上與你距離較近的用戶,這個(gè)功能在各種平臺上曾經(jīng)盛極一時(shí),依托「附近的人」的功能,也產(chǎn)生了一些灰色的產(chǎn)業(yè)鏈。
但今天要討論的不是如何利用「附近的人」來撩漢約P,而是站在產(chǎn)品的角度,分析「附近的人」是如何實(shí)現(xiàn)的。
如何實(shí)現(xiàn)?可能就是獲取了個(gè)人位置信息,將平臺上的所有用戶的位置信息按位置排序,然后逐一計(jì)算距離…
起初我也覺得這事就這么簡單。但果真如此,就不值得學(xué)習(xí)探討了。附近的人的實(shí)現(xiàn)策略,并不是一句話就能說清楚的。
首先,我們來回顧一些地理知識。
1、地球是圓的,分南北極,以地軸為中心自轉(zhuǎn)。
2、縱切線是經(jīng)線,常用「經(jīng)度」來衡量;橫切線是緯線,常用「緯度」來衡量;
3、緯線赤道往北極方向稱為「北緯」,往南極方向稱為「南緯」;經(jīng)線地軸往左方向是「西經(jīng)」,往右方向是「西經(jīng)」;經(jīng)線和緯線相交的點(diǎn)叫「坐標(biāo)」,如下圖中的紅點(diǎn):
也就是說,我們每個(gè)人目前所在的位置,都在某一條經(jīng)線和緯線的相交點(diǎn)上,都有一個(gè)「坐標(biāo)」,我們也常說「位置」。
那手機(jī)應(yīng)用是如何獲取我們的位置的呢(手機(jī)如何定位,知道我們在哪里)?
目前常用的定位技術(shù)有GPS定位、基站定位、WiFi輔助定位、AGPS定位、Glonass定位、北斗定位等。具體這些技術(shù)是什么原理這里不細(xì)講了,通過這些技術(shù),我們的位置會(huì)換算成一個(gè)「坐標(biāo)」,使用坐標(biāo)點(diǎn)(XX.XXXXX,Y.XXXXX)來描述,我們也常說這是「經(jīng)緯度」。
假如我們都獲取到了平臺上的用戶位置所在的坐標(biāo)點(diǎn),就可以計(jì)算你和TA的距離,就知道TA是不是你附近的人了。
如何計(jì)算你和TA的距離呢?
坐標(biāo)值保留小數(shù) 5 位,大概就可以精確到 1 米左右,比如A用戶和B用戶坐標(biāo)點(diǎn)A(20.38635,93.85210)與B(20.638635,93.85212)Y軸相差93.85212-93.85210 = 0.00002,相差在 2 米左右;在緯度相等的情況下:
*經(jīng)度每隔0. 00001 度,距離相差約 1 米;
*每隔0. 0001 度,距離相差約 10 米;
*每隔0. 001 度,距離相差約 100 米;
… 以此類推
?*在經(jīng)度相等的情況下:
*緯度每隔0. 00001 度,距離相差約1. 1 米;
*每隔0. 0001 度,距離相差約 11 米;
*每隔0. 001 度,距離相差約 111 米;
… 以此類推
但并不是所有用戶都在同一條經(jīng)線或者緯線上直接算直線距離,如果用戶量較大的情況下,要這樣使用二維坐標(biāo)(x,y)來計(jì)算距離是不現(xiàn)實(shí)的,其次,真實(shí)記錄用戶所在的經(jīng)緯度,且在多個(gè)地方使用經(jīng)緯度來計(jì)算位置,有一定的隱私問題。
如果我們想要更快地得知你所在的位置附近,都有哪些人,必須尋找快一點(diǎn)的方式,比如數(shù)據(jù)庫在數(shù)據(jù)量較大且需要排序時(shí),會(huì)經(jīng)常用到索引來提高計(jì)算效率。
愛盈利(aiyingli.com)移動(dòng)互聯(lián)網(wǎng)最具影響力的盈利指導(dǎo)網(wǎng)站。定位于服務(wù)移動(dòng)互聯(lián)網(wǎng)創(chuàng)業(yè)者,移動(dòng)盈利指導(dǎo)。我們的目標(biāo)是讓盈利目標(biāo)清晰可見!降低門檻,讓缺乏經(jīng)驗(yàn)、資金有限的個(gè)人和團(tuán)隊(duì)獲得經(jīng)驗(yàn)和機(jī)會(huì),提高熱情,激發(fā)產(chǎn)品。