2017-10-20 8 views
0

GPS座標に基づいて同じ場所で価格を比較しています。 私は、例えばある各項目のための私のMySQLデータベースで検索したいPHP/MySQL - 実際のGPS座標から半径500メートルのすべてのアイテムを検索

lat: 45.815005 
lng: 15.978501 

:私は、座標を持つアイテムを持っていますその場所の周り500メートル。 (円である必要はありません。Xの場合は500メートル、両方の場合はYの場合は500メートル)。別の列が

が、私はそれが正確なLNGと緯度を計算することは容易ではありません事実を認識していますが、私は数メートル各サイトを逃す場合、私は大丈夫だよ、私のDBにfloat(10,6)を入力としてLatlngが格納されています。

これはかなり複雑な質問ですが、私のスタートを切り開くアドバイスに感謝します。

+1

すでに試したことや調査したことはありますか? –

+0

これはどのように円になりませんか?私はあなたがhaversine式を探していると思います。 – chris85

+0

これは正方形である可能性があります。しかし、実際の距離は500メートルではなく500メートルの三角形の斜辺です。 – Andreas

答えて

2

2つの座標間の距離を計算することは、haversineの式を考えると実際には難しくありません。オリジナルの答えから

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 

Referenced Answer

必要な変更:

  1. オリジナルの答えで提供される定数はマイルまたはキロメートルの値を供給しました。私はメートルで動作するようにここで定数を変更しました。

  2. 定数が座標を使用するように変更されました。定数の代わりにこれらのパラメーターを作成するために、照会を少し変更することもできます。

  3. havingの表現は、500メートルのあなたの願いを反映するために少し変更されました。繰り返しますが、これはパラメータ化したいものかもしれません。

+0

大きな親指と受け入れられた答え。ありがとう! – Andurit

関連する問題