クライアント側のGoogleマップからxhrを介してphpスクリプトに緯度/経度の境界を取得しています。その境界内の場所を検索するためのSQLクエリを作成しています。私のテーブルlat, lng
は異なる列として保存されます。NE, SW
指定された境界内のポイントのみが返されるように、where クエリを配置するにはどうすればよいでしょうか。
データベースには次のように保存されてnumber
おり、同じことを行うためのpostgresql固有の集計関数が既にあるかどうかはわかりません。
クライアント側のGoogleマップからxhrを介してphpスクリプトに緯度/経度の境界を取得しています。その境界内の場所を検索するためのSQLクエリを作成しています。私のテーブルlat, lng
は異なる列として保存されます。NE, SW
指定された境界内のポイントのみが返されるように、where クエリを配置するにはどうすればよいでしょうか。
データベースには次のように保存されてnumber
おり、同じことを行うためのpostgresql固有の集計関数が既にあるかどうかはわかりません。
何か不足していますか?これは単なる長方形の境界チェックです。ポイント間の距離を計算する必要があるわけではありません。
WHERE lat BETWEEN lat_of_corner_a AND lat_of_corner_b
AND lon BETWEEN lon_of_corner_a AND lon_of_corner_b
私はここに実用的なソリューションを投稿しました: Get all records from MySQL database that are within Google Maps .getBounds?
アレックスのソリューションは、米国、特に北半球の西部地域でのみ機能します (値の減少は、Google が境界値を提供する順序に適合します。
これは、世界の残りの 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)
(詳しくはリンク先の記事をご覧ください)