我正在进行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));
我的问题是:
谢谢!
答案 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。