里面的lat,lng界限在哪里查询

时间:2012-06-26 19:22:05

标签: php postgresql google-maps google-maps-api-3

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

在数据库中,它存储为number,我不知道是否已经有任何postgresql特定的聚合函数来执行相同的操作。

2 个答案:

答案 0 :(得分:2)

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

WHERE lat BETWEEN lat_of_corner_a AND lat_of_corner_b
  AND lon BETWEEN lon_of_corner_a AND lon_of_corner_b

答案 1 :(得分:1)

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

(有关更多详情,请参阅链接的帖子)