我正在進行一個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