1

我从客户端的谷歌地图通过 xhr 获取 lat/lng 边界到我的 php 脚本。这是一个 sql 查询来搜索该范围内的位置。我的表存储lat, lng为不同的列。现在如何安排我的 where 查询,以便只NE, SW返回指定范围内的点。

在数据库中它存储为number,我不知道是否已经有任何 postgresql 特定的聚合函数来做同样的事情。

4

2 回答 2

3

我错过了什么吗?这只是一个矩形边界检查。这不像你需要计算点之间的距离。

WHERE lat BETWEEN lat_of_corner_a AND lat_of_corner_b
  AND lon BETWEEN lon_of_corner_a AND lon_of_corner_b
于 2012-06-26T19:36:48.347 回答
2

我在这里发布了工作解决方案: 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)

(有关详细信息,请参阅链接的帖子)

于 2013-12-24T03:48:17.497 回答