住所から緯度・経度といった地理座標を取得する場合、WebAPIを使うのがお手軽です。
Google Geocoding API
Googleが提供しているAPIです。
注意点
次のような制限があるので注意が必要です。
Google Geocoding API 使用時のクエリ制限として、1 日あたりの位置情報リクエストが 2,500 回に制限されています(Google Maps API for Business をご利用の場合は、1 日あたり 100,000 件までリクエストを実行できます)。
サンプル
var url = string.Format("http://maps.google.com/maps/api/geocode/json?address={0}", HttpUtility.UrlEncode("松山市二番町2丁目9-1エフショコラビル2階")); byte[] result; using (var wc = new WebClient()) { result = wc.DownloadData(url); } var jsonString = Encoding.UTF8.GetString(result); var placeInfo = DynamicJson.Parse(jsonString); if (placeInfo.status == "OK") { var location = placeInfo.results[0].geometry.location; Console.WriteLine(location.lat.ToString()); Console.WriteLine(location.lng.ToString()); } //コンソールには「33.8401915」と「132.7707142」が表示される
Yahoo!ジオコーダAPI
Yahoo!が提供しているWebAPIです。
注意点
事前に Yahoo!デベロッパーネットワーク でアプリケーションを登録してAPIキーを取得する必要があります。
サンプル
var url = string.Format("http://geo.search.olp.yahooapis.jp/OpenLocalPlatform/V1/geoCoder?appid={0}&query={1}&output=json", "{APIキー}", HttpUtility.UrlEncode("松山市二番町2丁目9-1エフショコラビル2階")); byte[] result; using (var wc = new WebClient()) { result = wc.DownloadData(url); } var jsonString = Encoding.UTF8.GetString(result); var placeInfo = DynamicJson.Parse(jsonString); if (placeInfo.ResultInfo.Count > 0) { var location = placeInfo.Feature[0].Geometry; Console.WriteLine(location.Coordinates); } //コンソールには「132.77070764,33.84025979」が表示される