2014-03-03 36 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 />"; 
}