ホームページ >バックエンド開発 >PHPチュートリアル >経度と緯度に基づいて近くの位置情報をクエリします

経度と緯度に基づいて近くの位置情報をクエリします

WBOY
WBOYオリジナル
2016-10-22 00:14:222573ブラウズ

現在、現在地の経度と緯度に基づいて、データテーブル内の 2 キロメートル付近の 5 つの場所をクエリしたい。クエリ結果に 5 つの場所が含まれていない場合は、近隣の範囲を拡大したい。 5 つの場所が見つかるまで。私は 2 つの選択肢を考えました:

最初のオプションは、SQL ステートメントを使用して完全に実装することです。SQL ステートメントを使用して完全に実装する場合、この SQL の書き方がわかりません。

2 番目のオプションは、最初にクエリを実行し、次に 5 つの場所が満たされない場合は、近くの範囲を拡大して、5 つの場所が見つかるまでデータベースで再度クエリを実行します。

2 つのオプションのどちらがより効率的かわかりません。アドバイスをお願いします。ありがたい。

返信内容:

現在、現在地の経度と緯度に基づいて、データテーブル内の 2 キロメートル付近の 5 つの場所をクエリしたい。クエリ結果に 5 つの場所が含まれていない場合は、近隣の範囲を拡大したい。 5 つの場所が見つかるまで。私は 2 つの選択肢を考えました:

最初のオプションは、SQL ステートメントを使用して完全に実装することです。SQL ステートメントを使用して完全に実装する場合、この SQL の書き方がわかりません。

2 番目のオプションは、最初にクエリを実行し、次に 5 つの場所が満たされない場合は、近くの範囲を拡大して、5 つの場所が見つかるまでデータベースで再度クエリを実行します。

2 つのオプションのどちらがより効率的かわかりません。アドバイスをお願いします。ありがたい。

あなたの2つの選択肢がまったく理解できません。

まずロジックを単純化できませんか?

あなたのリクエストは次のようなものではありません: 最も近い 5 つの場所をクエリします。 なぜ2キロ以内と2キロ離れたところを区別する必要があるのでしょうか。

最新の 5 つのポイントをクエリする場合、ビジネス上の判断を考慮する必要があるのは、単なる制限 SQL ステートメントではないでしょうか?

2 番目のオプションは、SQL を使用して完全に実装されます。効率を高めるには、データ層とビジネス層を別々に実行する必要があります。

Amap LBS Cloud が必要です。Amap LBS クラウドがあなたのニーズにお応えします

mysql空間座標データベースを試してください

リーリー リーリー

並べ替えたい場合は、距離を並べ替えることができます。

GEOHASH を使用して 2D 座標を文字列に変換し、それらを比較する必要があります

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。