我有一个 MySQL 数据库,其中每条记录都包含纬度和经度以及许多其他内容。目前这些都是 TEXT 类型,但如果有必要,我很乐意更改它。经纬度各一个变量,即
latitude: 51.258215
longitude: -0.123456
所以我想知道的是当 php 脚本接收到四个 POST 变量时获取记录列表的最快、最优雅的方法...代表矩形左上角和右下角的坐标在 map 上..?有什么方法可以真正优化速度吗?
最佳答案
MySQL 内置了一些基本的空间扩展(参见 spatial extensions)。这允许您将纬度/经度点存储为点记录,例如:
INSERT INTO store_locations (id, name, location)
VALUES (1, 'some name', POINT(51.258215, -0.123456));
然后您可以像这样运行空间查询 - 例如使用“minimum bounding rectangle”操作:
SELECT * FROM store_locations WHERE MBRWITHIN(location, MULTIPOINT($top $left, $bottom $right))
(其中 top、left、bottom 和 right 是相关坐标)。
关于php - 在 MySQL 数据库中的纬度/经度矩形内查找项目的优雅方式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4579250/