1

クライアント側のGoogleマップからxhrを介してphpスクリプトに緯度/経度の境界を取得しています。その境界内の場所を検索するためのSQLクエリを作成しています。私のテーブルlat, lngは異なる列として保存されます。NE, SW指定された境界内のポイントのみが返されるように、where クエリを配置するにはどうすればよいでしょうか。

データベースには次のように保存されてnumberおり、同じことを行うためのpostgresql固有の集計関数が既にあるかどうかはわかりません。

4

2 に答える 2

3

何か不足していますか?これは単なる長方形の境界チェックです。ポイント間の距離を計算する必要があるわけではありません。

WHERE lat BETWEEN lat_of_corner_a AND lat_of_corner_b
  AND lon BETWEEN lon_of_corner_a AND lon_of_corner_b
于 2012-06-26T19:36:48.347 に答える
2

私はここに実用的なソリューションを投稿しました: 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)

(詳しくはリンク先の記事をご覧ください)

于 2013-12-24T03:48:17.497 に答える