たたみラボ

  • about
  • member
  • r&d
  • blog
  • tatamicast

blog

RSS

Where2.0:Google Maps APIがバージョンアップ。ジオコーディングが可能に

icon June 13, 2006 4:15 PM by funami このエントリーを含むはてなブックマーク

logo_geo_day.jpg

フナミタカオです。

6/12に開催された、Geo Developer Dayにて、 Google Maps APIのバージョンアップが発表されました。
このバージョンアップにより、ついにジオコーディング(住所から、緯度経度を算出する機能)ができるようになりました。
このことについては、大井研究員も書いていますが、僕たちが一番望んでいた機能をリリースしてもらったということで、早速、サンプルをためしてみました。

GoogleMapsAPIによるジオコーディングのサンプル」をご覧ください。

ドキュメントは、Geocoding using JavaScript@Google Maps API Version 2 Documentation←こちらにあり、サンプルも載っているのですが、このサンプルは、6月13日15時30分(日本時間)現在、エラーがでて動作していません。6/14 5:20、動くことを確認しました。
そこで、たたみラボのサーバーにて、サンプルソースを動くようにしました。
GoogleMapsAPIによるジオコーディングのサンプル」をご覧ください。


特徴

・日本語に対応
・クライアントサイドで、クエリ結果をデフォルトでキャッシュする。これにより、同じ地名の検索は、サーバーに問い合わせることなく、表示される。
・複数の検索結果を取得する場合には、getLocations(address, callback)メソッドを使用する。複数の検索結果があっても、1件だけの戻りでよければgetLatLng(address, callback)メソッドを利用する。
・HTTPリクエストを使用して、XMLで検索結果を取得することも可能。KMLという、位置を記述する形式でもどる。このKMLはGoogleEarthでも位置を示す標準フォーマットになっていて、位置情報記述の標準を目指しているらしい。


勝どき検索の例。q=の値である%E5%8B%9D%E3%81%A9%E3%81%8Dは「勝どき」をURLエンエンコードした文字列
http://maps.google.com/maps/geo?q=%E5%8B%9D%E3%81%A9%E3%81%8D&output=xml&key=**key**
**key**は、APIキー

<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://earth.google.com/kml/2.0">
<Response>
<name>勝どき</name>
<Status>
<code>200</code>
<request>geocode</request>
</Status>
<Placemark>
<ddress>日本東京都中央区勝どき</address>
<AddressDetails xmlns="urn:oasis:names:tc:ciq:xsdschema:xAL:2.0">
<Country>
<CountryNameCode>JP</CountryNameCode>
<AddressLine>東京都中央区勝どき</AddressLine>
</Country>
</AddressDetails>
<Point>
<coordinates>139.775693,35.658192,0</coordinates>
</Point>
</Placemark>
</Response>
</kml>


output=jsonとすると、JSONオブジェクトで結果が返る。そのまま使えて便利。しかし、ここで気づいたのだが、jsonの場合は、複数の候補が戻るが、XMLの場合は1つだけ、同じクエリなのに、異なる結果になるのは、不具合かも。

{name: "勝どき",Status: {code: 200, request: "geocode"}, Placemark: [{address: "日本東京都中央区勝どき",AddressDetails: {Country: {CountryNameCode: "JP", AddressLine: ["東京都中央区勝どき"]}},Point: {coordinates: [139.775693, 35.658192, 0]}},{address: "日本東京都中央区勝どき2丁目",AddressDetails: {Country: {CountryNameCode: "JP", AddressLine: ["東京都中央区勝どき2丁目"]}},Point: {coordinates: [139.778483, 35.658512, 0]}},{address: "日本東京都中央区勝どき1丁目",AddressDetails: {Country: {CountryNameCode: "JP", AddressLine: ["東京都中央区勝どき1丁目"]}},Point: {coordinates: [139.776407, 35.660269, 0]}},{address: "日本東京都中央区勝どき3丁目",AddressDetails: {Country: {CountryNameCode: "JP", AddressLine: ["東京都中央区勝どき3丁目"]}},Point: {coordinates: [139.774642, 35.658757, 0]}},{address: "日本東京都中央区勝どき4丁目",AddressDetails: {Country: {CountryNameCode: "JP", AddressLine: ["東京都中央区勝どき4丁目"]}},Point: {coordinates: [139.776068, 35.657078, 0]}},{address: "日本東京都中央区勝どき6丁目",AddressDetails: {Country: {CountryNameCode: "JP", AddressLine: ["東京都中央区勝どき6丁目"]}},Point: {coordinates: [139.772370, 35.654995, 0]}},{address: "日本東京都中央区勝どき1丁目13",AddressDetails: {Country: {CountryNameCode: "JP", AddressLine: ["東京都中央区勝どき1丁目13"]}},Point: {coordinates: [139.775301, 35.660774, 0]}},{address: "日本東京都中央区勝どき6丁目5",AddressDetails: {Country: {CountryNameCode: "JP", AddressLine: ["東京都中央区勝どき6丁目5"]}},Point: {coordinates: [139.772233, 35.654974, 0]}},{address: "日本東京都中央区勝どき5丁目",AddressDetails: {Country: {CountryNameCode: "JP", AddressLine: ["東京都中央区勝どき5丁目"]}},Point: {coordinates: [139.771538, 35.656603, 0]}},{address: "日本東京都中央区勝どき6丁目5−23",AddressDetails: {Country: {CountryNameCode: "JP", AddressLine: ["東京都中央区勝どき6丁目5−23"]}},Point: {coordinates: [139.771969, 35.654884, 0]}}]}


・一日のクエリ件数は50000件に制限されているので、ユーザーが多いサイトでは要注意。
・緯度経度抽出のアルゴリズムは、GoogleMapsと同じ。

COMMENTS

これいいですね。

PerlでもJSONのパースはわりと簡単で、配列とハッシュの区別がついて便利なので、常にJSONモードで使ってもいいかも。

June 14, 2006 12:30 AM by 山本ゆうご  

現時点で、日本語でクエリーを投げると、
maps.google.com は 610、
maps.google.co.jp は 603 のステータスコードを返すだけで結果は返してくれないみたいですね。残念

June 15, 2006 11:26 AM by mori  

moriさんありがとうございます。
米国西海岸時間での朝9時前後はgoogle.comで問題なく結果が返ってきていたのですが、15時過ぎにはgoogle.comでも日本語アドレスに関しては603(G_GEO_UNAVAILABLE_ADDRESS)のエラーが戻ってきている状態です…残念

June 15, 2006 1:48 PM by 大井宏友  

2006年12月7日ついに復活!
http://googlemapsapi.blogspot.com/2006/12/japanese-address-and-placename-support.html
-----------------------
Google Maps APIでも、日本の住所や駅名によるジオコーディングがご利用いただけるようになりました。Maps APIを利用したサイトでは、Google マップと同様、ユーザーが入力した住所の緯度経度を割り出し、表示される地図の場所させることができようになりました。実装例はこちらをどうぞ。
-----------------------
とのことです!
やったー!

December 9, 2006 10:48 PM by フナミタカオ  

いや~。この日をまってました!

December 11, 2006 10:47 PM by アキラ  

どうもここにあるサンプルのようにoutputをxmlにすると、座標を返してくれなくなってしまったようです。

January 22, 2007 8:10 PM by ken  

一晩たちましたら、上記の不具合が改善されたようです。
お騒がせしてすみませんでした。

January 23, 2007 10:29 AM by ken  

POST COMMENT




(書式を変更するような一部のHTMLタグを使うことができます)

必ず利用規約に同意いただいた上で送信ください。

TRACKBACKS

ページトップへ



(C) RECRUIT MEDIA COMMUNICATIONS CO., LTD.