我有一个用户数据库,在数据库(mysql)中用纬度和经度定义,我用PHP脚本提取信息。
手机上的应用允许绘制一个矩形,并向我发送左上角的坐标和右下角的坐标。
如何比较纬度和经度以找到用户在矩形中?我找到了许多带圆圈和距离的解决方案,但它不符合我的需求......
我目前的查询,错了! :
SELECT * FROM users WHERE latitude BETWEEN ".$latitudeTopLeft." AND ".$latitudeBottomRight." AND longitude BETWEEN ".$longitudeTopLeft." AND ".$longitudeBottomRight.";
有没有人有个主意?感谢...
答案 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.';