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

PHP/MySQL-実際のGPS座標から半径500メートルのすべてのアイテムを検索します

    半正矢関数の式を考えると、2つの座標間の距離を計算することは実際にはそれほど難しくありません。

    SELECT 
      -- stuff here
      , ( 6371000 * acos( cos( radians(45.815005) ) * cos( radians( stuff.lat ) ) * cos( radians( stuff.lng ) - radians(15.978501) ) + sin( radians(45.815005) ) * sin(radians(stuff.lat)) ) ) AS distance 
    FROM 
      stuff
    HAVING 
      distance < 500
    

    参照回答

    元の回答からの必要な変更:

    1. 元の回答で提供された定数は、マイルまたはキロメートルの値を提供しました。ここでは、メーターで機能するように定数を変更しました。

    2. 座標を使用するように定数が変更されました。クエリをもう少し調整して、定数の代わりにこれらのパラメータを作成することをお勧めします。

    3. 持っている 500メートルへの欲求を反映して表情が少し変わりました。繰り返しますが、これはパラメータ化したいものかもしれません。




    1. MySQLで文字列と数値を連結する

    2. PHPlaravel5を使用して配列からmysqlにデータを保存する方法

    3. Gridviewは現在のコンテキストに存在しません

    4. デフォルトのページネーションを上書きせずにカスタムクエリをページネーションできますか?