获取落在特定区域内的坐标

时间:2013-04-08 17:55:36

标签: php geolocation geometry coordinates

我正在进行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));

我的问题是:

  1. 这是一种最佳的搜索方式吗?
  2. 是否有更适合此用途的PHP库/辅助函数?
  3. 谢谢!

1 个答案:

答案 0 :(得分:1)

简单地说:

WHERE lat BETWEEN $lat_min AND $lat_max AND lng BETWEEN $lng_min AND $lng_max

并在lat和lng列上放置索引以更好地优化查询。

请记住,如果left_lng> right_lng你的窗户横跨日期线,你需要将其分成两个+/- 180度的方框。

经度一般从西向东增加,但越过国际日期线,经度从180度变为-180度。如果您在跨越此行的框中使用相同的查询,您将获得框外所有经度的结果。您需要检测条件并将查询条件拆分为2个框,从lng_left到180和-180到lng_right。