【发布时间】:2017-04-11 02:18:46
【问题描述】:
大家好,感谢您的帮助。 我想要做的是使用用户的纬度和经度,并将其与我保存在数据库中的纬度和经度以及相关的城市名称进行比较。我现在拥有的代码有效,但问题是在 30 英里半径内可能有不止一行。看看我的代码,如果可以的话,请帮助我。
<?php function distance($lat1, $lon1, $lat2, $lon2) {
$pi80 = M_PI / 180;
$lat1 *= $pi80;
$lon1 *= $pi80;
$lat2 *= $pi80;
$lon2 *= $pi80;
$r = 6372.797; // mean radius of Earth in km
$dlat = $lat2 - $lat1;
$dlon = $lon2 - $lon1;
$a = sin($dlat / 2) * sin($dlat / 2) + cos($lat1) * cos($lat2) * sin($dlon / 2) * sin($dlon / 2);
$c = 2 * atan2(sqrt($a), sqrt(1 - $a));
$km = $r * $c;
//echo '<br/>'.$km;
$km = $km * 0.621371;
return $km;
}
include_once("dbconnect.php");
/* check connection */
if ($mysqli->connect_errno) {
printf("Connect failed: %s\n", $mysqli->connect_error);
exit();
}
$grabCities = "SELECT * FROM cities";
$result = $mysqli->query($grabCities);
while($row = mysqli_fetch_array($result)){
$distance = distance(41.08866717,-81.4780426,$row['lat'],$row['longitude']);
if ($distance < 30){
echo $myCity = $row['City'] . "<BR>";
}
}
$mysqli->close();
?>
【问题讨论】:
-
这里真的不清楚你在问什么。
-
我想做的是从我的数据库中得到的所有结果;转换纬度和经度。找到离用户最近的城市,然后选择那个城市。 @Augwa
-
您可以在 SQL 中执行此操作,只需对结果进行排序,限制为 1。
-
不,我根据距离得到了正确的计算;我需要整理我的结果,从 416 个中选择一个数字最小的那个,以及那个城市的名称。它保存在我的数据库中。 @Augwa
-
我不能用 SQL 来做,因为我只会抓取一行,有 416 行;我不想比较一个。我想比较它们并找出最近的城市。 @Augwa
标签: php mysql geolocation