GoogleジオコーディングをC#で簡単に利用する方法について
はじめまして、エンジニアのR.Nです。
今回のテクヤンは、
Google Mapsジオコーディングサービスを利用して、
C#で住所から、経度・緯度を取得する方法をご紹介致します。
【サンプルコード】 using System.Net; // URI で識別されるリソースとのデータの送受信用の共通クラス WebClient downloadClient = new WebClient(); // URL Uri uriUrl = new Uri(string.Format( "http://maps.google.com/maps/geo?q={0}&output=csv&sensor=false", "※ジオコーディングしたい住所を入力して下さい。")); // ジオコーティング string result = downloadClient.DownloadString(uriUrl); // 取得結果 string[] results = result.Split(','); downloadClient.Dispose();
WebClientクラスを使用することで、URL実行結果を、文字列で取得することができるため、
プログラム上で扱いやすい形式に変換することができます。
※Dispose()処理を必ず、行ってください。
連続して処理を実行した場合、メモリ解放が行われず、OutOfMemoryのExceptionが発生するので注意が必要ですが、
下記のようにUsingを使用すると、エラーが発生した場合でも自動でDispose()処理を行ってくれるので便利です。
【サンプルコード】 using System.Net; // URI で識別されるリソースとのデータの送受信用の共通クラス using (WebClient downloadClient = new WebClient()) { // URL Uri uriUrl = new Uri(string.Format( "http://maps.google.com/maps/geo?q={0}&output=csv&sensor=false", "※ジオコーディングしたい住所を入力して下さい。")); // ジオコーティング string result = downloadClient.DownloadString(uriUrl); // 取得結果 string[] results = result.Split(','); }
【取得結果詳細】 results[0] ・・・HTTPステータスコード results[1] ・・・精度 results[2] ・・・経度 results[3] ・・・緯度
【パラメータ説明】 http://maps.google.com/maps/geo?q=XXX&output=csv&sensor=false q=XXX ・・・住所を設定します。 output=csv ・・・出力形式を設定します。(output=csv:CSV形式で出力 / output=xml:XML形式で出力) sensor=false ・・・アプリケーション上からセンサー(GPSのような位置を指示する機器)を使って 位置を決めることが必要かどうかを設定します。(true:必要 / false:不要)
参考URL
http://code.google.com/intl/ja/apis/maps/documentation/premier/guide.html
http://msdn.microsoft.com/ja-jp/library/system.net.webclient(VS.80).aspx