比较矩形区域中的纬度和经度(无距离)

时间:2017-09-06 12:24:07

标签: php mysql

我有一个用户数据库,在数据库(mysql)中用纬度和经度定义,我用PHP脚本提取信息。

手机上的应用允许绘制一个矩形,并向我发送左上角的坐标和右下角的坐标。

如何比较纬度和经度以找到用户在矩形中?我找到了许多带圆圈和距离的解决方案,但它不符合我的需求......

我目前的查询,错了! :

SELECT * FROM users WHERE latitude BETWEEN ".$latitudeTopLeft." AND ".$latitudeBottomRight." AND longitude BETWEEN ".$longitudeTopLeft." AND ".$longitudeBottomRight.";

有没有人有个主意?感谢...

1 个答案:

答案 0 :(得分:0)

MySQL有一些基本的空间扩展(参见空间扩展)。这允许您将纬度/经度点存储为点记录。使用此功能,您可以使用“minimum bounding rectangle”创建选择。

但是既然你已经有了现有的结构,你可能需要在两者之间进行合作。

$LAT1 = min($latitudeTopLeft, $latitudeBottomRight);
$LAT2 = max($latitudeTopLeft, $latitudeBottomRight);

$LON1 = min($longitudeTopLeft, $longitudeBottomRight);
$LON2 = max($longitudeTopLeft, $longitudeBottomRight);

$sql = 'SELECT * FROM users WHERE latitude BETWEEN '.$LAT1.' AND '.$LAT2.' AND longitude BETWEEN '.$LON1.' AND '.$LON2.';