0

名前、郵便番号、移動距離のcsvファイルがあります。Webユーザーは、郵便番号と、検索する距離の半径1マイルを入力します。そして、csvファイル内でその検索に一致する人の名前を探しています。私は現在利用可能なジオロケーション検索や無料のテクノロジー(グーグルマップなど)にあまり精通していません。このサイトはphpでプログラムされており、jqueryを使用しています。マップは必要ありません。名前の配列またはツリーだけが必要です。これを設定する方法について何か提案はありますか?

CSVの例

"1","John Smith","ZipCode-12345","TravelDistance-30"

解決

  1. cronジョブを設定してcsvファイルを取得し、mysqldbテーブルにダンプします
  2. 都市/州、緯度/経度、郵便番号のデータベーステーブルをダウンロードしました
  3. SQL式を使用して距離を計算し、一致を照会しました
SELECT id, ( 3959 * acos( cos( radians(37) ) * cos( radians( lat ) )

* cos(radians(lng)-radians(-122))+ sin(radians(37))* sin(radians(lat))))距離を持っているマーカーからの距離<25 ORDERBY距離LIMIT0、20;

4

1 に答える 1

3

基本的に、このような場合は、データベースと2つのテーブルを使用します。

  • 1つのテーブルcities (または郵便番号-それらが都市に対応しているかどうかはわかりません) ; そのテーブルでは、あなたは持っているでしょう:
    • id
    • 都市の名前
    • 緯度
    • 経度
  • のための1つのテーブルusers
    • id
    • ユーザーの名前
    • zipcode_id:他のテーブルの行への外部キー-ユーザーが住んでいる都市


特定のユーザーに近いユーザーを計算しようとすると、実際には、ユーザーがいる都市に近い都市を計算し、そこから対応するユーザーを見つけます。

どの都市が特定の都市に近いかを判断するために、いくつかの式を見つけることができると思います。たとえば、次の質問/回答を参照してください。


都市/郵便番号のデータベースを初期化するときは、各都市の緯度と経度を調べる必要があることに注意してください。インターネット上のどこかに、すべての都市の座標を含むデータベースが見つかると思います。

(別の解決策は、Googleマップのジオコーディングサービスにリクエストを送信することですが、私が正しく覚えていれば、それは利用規約では許可されていません)

于 2011-04-04T05:07:37.733 に答える