特定の地点から半径 500 メートル以内にあるすべてのストリート名を照会したいと考えています。複数の投稿が、 Haversine 式またはその何らかのバージョンを使用した Google ストア ロケーターの例を参照しています。しかし、より単純化された解決策を持ついくつかの投稿にも出くわしました。
以下に示すように、緯度と経度の変数に追加することで、ポイントを x、y 座標として扱うだけです。
これが本当に複雑になることなくmysqlにクエリを実行し、それでも良い結果が得られる最速の方法であるかどうか、私はさまよっていました。私はまだ多くのデータを持っていないので、正しい軌道に乗っているかどうか知りたい. この方法を使用することによる欠点や不正確さはありますか?
私が得られないのは、これがどのように範囲のような半径になるかということです。それは一方向のクエリのように見えますか?
Distance = 0.1; // Range in degrees (0.1 degrees is close to 11km)
LatN = lat + Distance;
LatS = lat - Distance;
LonE = lon + Distance;
LonW = lon - Distance;
...Query DB with something like the following:
SELECT *
FROM table_name
WHERE
(store_lat BETWEEN LatN AND LatS) AND
(store_lon BETWEEN LonE AND LonW)