2014-03-03 32 views
0

我在php/mysql中建立一個小型簡單腳本來檢查荷蘭兩個城市之間的距離。 問題是,我想知道我可以如何計算任何給定比例的最大距離。如何在半徑內獲得最大GPS位置

例如,我位於Sittard,我查看附近的幾個城市。

Van Sittard (51.00000000,5.86666700) naar Munstergeleen  (50.98333300,5.86666700) is 1.9 KM 
Van Sittard (51.00000000,5.86666700) naar Doenrade  (50.96666700,5.90000000) is 4.4 KM 
Van Sittard (51.00000000,5.86666700) naar Geleen  (50.96666700,5.83333300) is 4.4 KM 
Van Sittard (51.00000000,5.86666700) naar Nuth   (50.91666700,5.88333300) is 9.3 KM 
Van Sittard (51.00000000,5.86666700) naar Hoensbroek  (50.91666700,5.93333300) is 10.4 KM 

我知道我的位置,以及至少我的城市和我想去的位置。 現在我想知道多少可以說10公里是。

所以我可以做類似

SELECT * FROM locations WHERE mylocation > whevereveriwantogoto AND whereeveriwanttogoto > maxmylocation ? 

應該有一個簡單的方法(我猜)只是在一個簡單的查詢做馬半徑從給定的GPS位置? 否則,我需要檢查數據庫中的每一個GPS位置,看看他們是否在半徑內,然後只顯示那些。 比方說,我的數據庫中有100萬個GPS位置,我的腳本被1000人使用。

我甚至不想知道我的服務器的負載多少將是;)

任何人都知道一個簡單的MySQL查詢?

小更新我想這:

$lat = $_GET['lat']; 
$lng = $_GET['lng']; 

$sql="SELECT *, (3959 * acos(cos(radians('".$lat."')) * cos(radians(lat)) * cos(radians(lng) - radians('".$lng."')) + sin(radians('".$lat."')) * 
sin(radians(lat)))) 
AS distance 
FROM postcode WHERE distance < 15 ORDER BY distance LIMIT 0 , 10"; 

$result = mysql_query($sql); 
while($r = mysql_fetch_assoc($result)) { 
echo $r['name']; 
} 

,但我得到:

您的SQL語法錯誤; ())+ sin(弧度('51 .00000000'))* sin(弧度(lat))')在'long' - 弧度('5.86666700'))+ sin('在1號線

我再次更新,但現在我得到:

那些郵編,甚至沒有..也供應

我使用:經緯度和數據庫中的位置

所以問題是,我怎麼能得到多遠,它可以是一個點?在示例代碼我看到'距離',但我沒有那張桌子,我不知道爲什麼我需要它。距離哪裏?

回答

0

修好了!

實施例:

$lat = $_GET['lat']; 
$lng = $_GET['lng']; 
$distance = $_GET['dist']; 

$result = mysql_query("SELECT *, (6371 * acos(cos(radians($lat)) * cos(radians(lat)) * cos(radians(lng) - radians($lng)) + sin(radians($lat)) * sin(radians(lat)))) AS distance FROM city HAVING distance < $distance ORDER BY distance"); 
echo mysql_error(); 
while($r = mysql_fetch_assoc($result)) { 

$getcityname = mysql_query("SELECT * FROM cityname WHERE city_id = '$r[id]' AND official = '1'"); 
while($putcityname = mysql_fetch_array($getcityname)) { 
$cityname = $putcityname['name']; 
} 
echo $cityname; 
echo "<br />"; 
}