GoogleMapsAPIで住所から緯度・経度を取得する
2007年12月6日
GoogleMapsAPIを使って、住所文字列から緯度・経度を取得する。
・・・とまぁ、新しいネタでもなんでもないんですが、
自分で調べたときに若干見つかりにくかったので上げときます。
叩くURLのフォーマット
http://maps.google.co.jp/maps/geo?q={*住所*}&output={*取得形式*}&key={*APIキー*}
試しにこれをアドレスバーに入れて叩いてみよう
http://maps.google.co.jp/maps/geo?q=%E6%9D%B1%E4%BA%AC%E9%83%BD%E6%B8%8B%E8%B0%B7%E5%8C%BA%E6%B8%8B%E8%B0%B71-2-5&output=xml&key=ABQIAAAAZOlyLyDe18RyB1iSNq6E_xQ-opQx7k7Itge3hfkWsuIaGj0jThQ9ap2hldWJB6APa4LLJJQGkVEabw
coordinatesノードに “経度,緯度,0” で座標情報の含まれるXMLが返るはずです。
(最後の”0″はなんだかわかりません)
【解説とか】
- qパラメータは、URLエンコードした住所文字列を指定します。手軽に取得したければ、
JSで encodeURIComponent(‘住所文字列’) と書けば取得できます。 - outputパラメータは、”xml”か”json”を指定できます。効果は・・・見たとおりです。
- keyはAPIキーというGoogleMapAPIを使用するためのキーを指定します。
APIキーを取得するためにサービスのドメインを記述する必要がありますが、
何気にクライアントとして使うだけならドメインは無関係に使えたりします。
(サーバにコンテンツの一部としてGoogleMapsAPIキーを配置するならドメインと整合している必要がある) - APIキーの取得方法はコチラ参照
- xmlの解析は、(1)まず、codeノードのテキストを取得して、「”200″=緯度経度取得成功、その他=緯度経度の取得失敗」を判別して、(2)その後でcoordinatesノードの値を取りに行く、と良いです。
- 住所文字列の末尾にマンション名とかが付いていると失敗する。例えば、”渋谷区渋谷1-2-3コーポベルサイユ201″ とかは失敗する。