[英]How to select closest gps coordinate from database?
我有表GPS_tbl
在mysql數據庫my_db
。 在GPS_tbl
有四列1)uid
2)latitude
3)longitude
4)regid
。 在第2)latitude
列2)latitude
3)longitude
不同的latitude
和longitude
值已經存儲為浮點數,現在我想要的是當用戶通過POST()
比較這些用戶發送的坐標時,用gps coordinates in terms of latitude and longitude
發送他/她的gps coordinates in terms of latitude and longitude
列中存儲的坐標2)latitude
3)longitude
和列中的坐標2)latitude
3)longitude
最接近用戶發送坐標的regid
選擇對其的regid
。 請有人幫我在php
如何做到這一點。
這是用戶發送他/她的GPS坐標的方式。
$lati = $_POST['lati'];
$longi = $_POST['longi'];
$float_value_of_lati = floatval($lati);
$float_value_of_longi = floatval($longi);
這是GPS_tbl
+--------------+------------+-------------+-------------+
| uid | latitude | longitude | regid |
+--------------+------------+-------------+-------------+
| 1 | 73.3433 | 18.5223 |APA91W-ClDoS |
| | | | |
+--- ----------+------------+-------------+-------------+
| 2 | 43.3433 | 24.5523 |BON91W-ClDoS |
| | | | |
+--- ----------+------------+-------------+-------------+
| 3 | 55.3433 | 37.5323 |WCD71P-ClDoS |
| | | | |
+--- ----------+------------+-------------+-------------+
我不打算向您解釋如何連接到MySQL服務器,獲取數據庫的實例,以及運行SQL查詢。 有很多教程。 我打算幫你查詢。 為此,我們將使用畢達哥拉斯定理 。 這不是最好的方法,因為地球不平坦,但我認為它會起作用(不是在我們從-180º到180º的太平洋中部)
"SELECT uid,regid, sqrt(latitude-".$users_latitude.")+sqrt(longitude-".user_longitude.") AS SQRT_DIST
FROM GPS_tbl ORDER BY SQRT_DIST LIMIT 1;
這就是你如何得到最接近的點。
請注意,返回的距離是距離^ 2。
http://www.geodatasource.com/developers/php請檢查這樣的教程,以計算用戶發送坐標和存儲坐標之間的距離。計算距離后,對結果集進行排序,得到最近的坐標。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.