我从客户端的谷歌地图通过 xhr 获取 lat/lng 边界到我的 php 脚本。这是一个 sql 查询来搜索该范围内的位置。我的表存储lat, lng
为不同的列。现在如何安排我的 where 查询,以便只NE, SW
返回指定范围内的点。
在数据库中它存储为number
,我不知道是否已经有任何 postgresql 特定的聚合函数来做同样的事情。
我从客户端的谷歌地图通过 xhr 获取 lat/lng 边界到我的 php 脚本。这是一个 sql 查询来搜索该范围内的位置。我的表存储lat, lng
为不同的列。现在如何安排我的 where 查询,以便只NE, SW
返回指定范围内的点。
在数据库中它存储为number
,我不知道是否已经有任何 postgresql 特定的聚合函数来做同样的事情。
我错过了什么吗?这只是一个矩形边界检查。这不像你需要计算点之间的距离。
WHERE lat BETWEEN lat_of_corner_a AND lat_of_corner_b
AND lon BETWEEN lon_of_corner_a AND lon_of_corner_b
我在这里发布了工作解决方案: Get all records from MySQL database that are within Google Maps .getBounds?
Alex 的解决方案仅在美国有效,特别是在北半球西部地区(递减值符合 Google 提供 bouds 值的顺序。
这个适用于世界上另外 3/4 的地区。
SELECT * FROM tilistings WHERE
(CASE WHEN a < c
THEN lat BETWEEN a AND c
ELSE lat BETWEEN c AND a
END)
AND
(CASE WHEN b < d
THEN lng BETWEEN b AND d
ELSE lng BETWEEN d AND b
END)
(有关详细信息,请参阅链接的帖子)