0

アドレスで満たされたデータベース テーブルがあり、テーブルの長さは 4,000 レコードを超えています

住所を取得して検索フィールドと比較し、検索フィールドの場所からの距離で並べ替える最良の方法を知りたいですか? GoogleAPI ドキュメントによると、リクエストは 1 日あたり 25,000 程度に制限されていますが、これは 1 日あたり 7 回しか検索できないということですか?

4

2 に答える 2

1

私の意見では - はい。Google は 2 つの LatLng 間の距離を計算するのが賢明です。これは、2 点間の直線距離ではなく、道路と道路を使用して距離を計算するためです (php で簡単に計算できます)。

これら 4000 の住所の LatLng を保存しても、ユーザーの住所からそれぞれの住所までの距離を Google に問い合わせる必要があるため、何の役にも立ちません。すべての LatLng を持っていても、それを自分で計算することはできません ( mapが必要です)。

各ユーザー入力を保存し、その住所を各場所までの 4000 の距離で保存できると思いますが、それはユーザーが 2 回目にサイトに戻る場合にのみ役立ちます。

...

わかりました、私はこの考えを持っています:

  1. 4000 の場所のそれぞれの LatLng を保存してください。
  2. 4000か所すべての場所間の距離を保存します(1 つを選択すると、距離順に並べられた他のすべての場所のリストを取得できます)。
  3. ユーザーから住所を取得したら、それを LatLng に変換し、単純な数学を使用して直線で最も近い場所を見つけます。
  4. データベースから他のすべての場所までの距離のリストを使用して、Google にその場所までの実際の距離と、それに最も近い場所までの約 10 ~ 20 の距離を取得するように依頼します。残りについては、データベースから最も近い距離を使用します。

このようにして、ユーザー入力から最も近い場所までの最初の 10 ~ 20 の正確な距離を取得し、残りをデータベースから取得します。実際には、最も近い場所から他の場所までの距離になります。

于 2013-05-30T04:19:47.517 に答える
0

住所はそれほど変わらないので、緯度経度をどこかにキャッシュして、繰り返しリクエストする代わりにそれらを参照できると思います。もちろん、他の緩和条件がある場合は詳しく説明してください。

于 2013-05-30T02:57:38.633 に答える