php - GreatCircle 和 mysql 查询

标签 php mysql gps latitude-longitude

我有一张带有经/纬度坐标的表格 我需要的是从mysql表中获取距给定坐标一定距离的用户(可以是圆形或方形)

我使用 GreatCircle 类 ( Great Circle Distance question ) 获取距起点一定距离的东北西南坐标:

$distance = 300;

$GreatCircle = new GreatCircle();

// North
$new_coordinates = $GreatCircle->getPositionByDistance($distance, 0, $lon, $lat);
$N_lon = $new_coordinates['lon'];
//$N_lat = $new_coordinates['lat'];

// East
$new_coordinates = $GreatCircle->getPositionByDistance($distance, 90, $lon, $lat);
//$E_lon = $new_coordinates['lon'];
$E_lat = $new_coordinates['lat'];

// South
$new_coordinates = $GreatCircle->getPositionByDistance($distance, 180, $lon, $lat);
$S_lon = $new_coordinates['lon'];
//$S_lat = $new_coordinates['lat'];

// West
$new_coordinates = $GreatCircle->getPositionByDistance($distance, 270, $lon, $lat);
//$W_lon = $new_coordinates['lon'];
$W_lat = $new_coordinates['lat'];

现在,我可以创建这样的sql来从我的 table 上获取周围300米的其他坐标吗?

$GreatCircle = 
"l.longitude <= $E_lon 
AND l.latitude <= $N_lat
AND l.longitude >= $W_lon
AND l.latitude >= $S_lat";

最佳答案

如果你不介意正方形,那就可以了。 (尽管请记住,有时纬度/经度值是负数......)

通常,您会将两组纬度/经度对传递给函数,并返回距离作为结果。那么你只需检查距离是否在你的限制之内。 (这将是圆形版本)

关于php - GreatCircle 和 mysql 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6649862/

相关文章:

php - Laravel 重定向->back() 返回空参数

php - 使用 ajax php 和 mysql 自动完成

PHP、mysql 密码重置未启动

iphone - 单击 "OK"后首次运行时 GPS 未启动

ios - iPhone GPS导航不会退出

android - 如何在 Flutter 中获取 GPS 时间?

php - CodeIgniter session 错误 - 不允许取消链接操作

mysql - 无法使用多个子查询解决查询中的父字段

mysql - 如何更新现有记录以在 MySQL 中具有新的 auto_increment id?

php - 删除列中除字母和单个空格之外的所有内容