• ベストアンサー

【PHP】郵便番号から近隣のお店検索

質問させていただきます。 当方環境はPHP4+mysqlです。 郵便番号を入力して近隣のお店を検索するというシステムを構築したいのですが、どうやって構築するのか悩んでおります。 # お店の住所情報はmysqlDBに登録されており、任意に取得可能です。 郵便番号からどうやって近隣のお店かどうか判定するのか、サンプルなどあれば添えてご教授いただければと思います。 よろしくお願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
  • yyr446
  • ベストアンサー率65% (870/1330)
回答No.1

住所だけで、近隣のお店かどうか判定するのは難しいと思います。 住所の緯度と経度を調べてDBに住所と一緒に登録しておきます。 緯度と経度を調べるのは「ジオコーディング」といって、GoogleやYahoo がWebのAPIを提供しているから、それを使うとよいでしょう。 ※他にも「ジオコーディング」で検索するといろいろ見つかります http://code.google.com/intl/ja/apis/maps/documentation/javascript/v2/services.html#Geocoding http://developer.yahoo.co.jp/webapi/map/openlocalplatform/v1/geocoder.html 郵便番号から住所を検索するサービスも、自サーバーにインストールするパッケージとか APIサービスが無料の物(自分でメンテナンスが前提)が結構みつかります。 http://developmentor.lrlab.to/postal/tutorial.html http://zip.ricollab.jp/ 郵便番号から求めた住所をジオコーディングして緯度・経度を出し、 お店の緯度・経度から距離を求めます。 距離の算出は、近距離ならば3平方の定理(L^2=X^2+Y^2)で十分です。 広域なら、球面三角方を使います(地球は丸いから) http://gpscycling.net/fland/make/ckyoho.htm http://www-seis1.kugi.kyoto-u.ac.jp/visual/grams/index4.html こおいった、部品をPHPやJavascript等で作れば出来ると思います。

yume1161
質問者

お礼

なるほど、非常に参考になりました。 確かにyyr446さんのおっしゃる手順でプログラミングすれば望むシステムを構築できそうです。 早速作成にとりかかります。 ありがとうございました!

すると、全ての回答が全文表示されます。

その他の回答 (1)

  • manimani2
  • ベストアンサー率70% (12/17)
回答No.2

基本的にはNo1の回答者さんと同じですが、一つのアイディアとして回答しておきます。 「近隣」という言葉の解釈にもよりますが、郵便番号から住所を取得する事は既存のAPIなど使えばできますので、以下のように・・・ 1.郵便番号入力 ↓ 2.市町村名を取得 ↓ 3.DBのLIKEを使って、住所フィールドから2で取得した市町村名が含まれるレコードを取得する。 という感じならば、「近隣=同一市町村」という処理ができると思います。まぁ、質問者さんが考えておられる「近隣」とは違うかもしれませんが・・・。

yume1161
質問者

お礼

回答ありがとうございます。 なるほど、まだ仕様が確定していない部分もあるので「近隣」の定義がはっきりしていないのですが、DBレコード全てについて判定するのは処理速度上問題があるかもしれませんので、manimani2さんのいっしゃるようにSQLを利用して該当するレコードのみを抜き出すという処理が適していますね。

すると、全ての回答が全文表示されます。

関連するQ&A