【发布时间】:2014-03-03 19:40:21
【问题描述】:
我在 php / mysql 中构建了一个简单的小脚本来检查荷兰两个城市之间的距离。 问题是我想知道如何以给定值的比率计算最大距离。
例如,我位于 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 位置获取 ma 半径? 否则我需要检查数据库中的每一个 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 语法有错误;检查手册 对应于您的 MySQL 服务器版本,以便使用正确的语法 接近'long) - 弧度('5.86666700')) + sin(弧度('51.00000000')) * sin(radians(lat))' 在第 1 行
我再次更新,但现在我得到了:
9061 8882 9174 6285 4931 7667 8458 7135 5534
那些邮政编码甚至不在附近..
我在数据库中使用:lat 和 lng 作为位置
所以问题是,我怎样才能得到点 a 的距离?在示例代码中,我看到“距离”,但我没有那个表,我不知道为什么需要它。距离哪里?
【问题讨论】: