我正在进行一个API调用,它应该返回某个区域内的点列表。获取某个区域内的坐标
这将在地图上使用,因此对API的调用具有所有四个角点的坐标。
该区域将始终为矩形,不会被旋转。
目前,我使用的是下面的算法用于限制的结果:
$lat_limits = array(min($bottom_left_lat, $top_left_lat), max($bottom_left_lat, $top_left_lat));
$lon_limits = array(min($top_left_lon, $top_right_lon), max($top_left_lon, $top_right_lon));
我的问题是:
- 这是搜索的最佳方式是什么?
- 是否有任何PHP库/帮助函数更适合此用途?
谢谢!
'WHERE lat BETWEEN $ lat_min AND $ lat_max AND lng BETWEEN $ lng_min AND $ lng_max',并在您的lat和lng列上放置索引。请记住,如果left_lng> right_lng您的窗口跨越日期线,您需要将它分成+/- 180度的两个框。 – Sammitch 2013-04-08 18:04:03
感谢您的快速回复。这与我使用的查询是一样的。不过,我对'left_lng> right_lng'这个案例的评论的第二部分不甚了解。你能解释更多吗? – 2013-04-08 18:08:27
经度一般从西向东递增,但跨越经度从180度变为-180度的国际日期线除外。如果您在跨越此线的框中使用相同的查询,您将获得所有经度*在框外的结果。您需要检测条件并将查询条件分成2个框,从$ lng_left到180和-180到$ lng_right。 – Sammitch 2013-04-08 18:12:13