用程式的邏輯來表達就是:
以 (x, y) 座標為中心,找尋方圓 n 公里以內的點
資料庫不外乎就是儲存經緯度 (longitude, latitude)
----------------------------- id | lat | lng ----+-----------+------------ 1 | 25.151000 | 121.549000 2 | 25.010000 | 121.574000 3 | 25.070000 | 121.589000
今天我想找 User1 附近 10km 以內的人
方法一
來看"距離"跟"經緯度"的關係是什麼,從 Decimal degrees - Wikipedia 知道,其實他們並非線性的關係,而是一堆三角函數算出來的,因為隨著緯度越高,單位經緯度所對應的距離就越短。從 別搗蛋 歸納出的對應表:
台灣地區: 兩地經緯度相差 0.5度:距離相差約 50公里 兩地經緯度相差 0.1度:距離相差約 10公里 兩地經緯度相差 0.05度:距離相差約 5公里 兩地經緯度相差 0.01度:距離相差約 1公里