sql >> データベース >  >> RDS >> Mysql

Google Maps .getBounds内にあるMySQLデータベースからすべてのレコードを取得しますか?

    以前の回答はすべて、世界の1/4でしか機能しません!

    W3t Tr3yの答えは近いものでしたが、エラーがありました(余分な「<」)。

    それらはすべて、北半球にあるため、米国でのみ機能します。南半球でも、東の国(グリニッジの右側)でも機能しません。

    これは、機能や複雑なものを含まない単純なソリューションです。

    文字は、map.getBounds()から取得した順序での結果です。つまり、swlat、swlng、nelat、nelng =a、b、c、dです。

    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) 
    

    または、および/またはを使用した別のソリューション(速度をテストできますが、WorkBenchで複数回実行する方法がわかりません)

    SELECT * FROM tilistings WHERE
    (a < c AND lat BETWEEN a AND c) OR (c < a AND lat BETWEEN c AND a)
    AND 
    (b < d AND lng BETWEEN b AND d) OR (d < b AND lng BETWEEN d AND b)
    

    今、あなたは全世界をマッピングすることができます:)誰かが上記の答えを間違っているとマークできることを願っています。なぜなら、彼らは私たちを私のような何百万もの学習者に多くの時間を失ってしまうからです。彼らが実際に機能しないのに、どうしてそんなに多くの票を獲得するのだろうか!

    PS:マップのピクセルエッジが座標の正確な小数点以下15桁の値と一致する可能性は、世界の3/4全体を見逃す可能性よりも数十億倍少ないです!



    1. PHP / MySQL-BEGIN...COMMITが機能しない

    2. クエリから値を返すMysql関数

    3. JavaでのMySQLの日時とタイムスタンプの処理

    4. phpのカテゴリ名をmysqlテーブルに保存するための最良の方法