[C#] 使用 Google Maps Geocoding API 將地址轉換為經緯度

本來是使用Google Map JavaScript API的google.maps.Geocoder,但發現Google似乎有對查詢間隔做限制,Code常常一下可以一下又不行,找了很久終於找到了不錯的C#解決方案,而且似乎沒有任何限制唷!

1
2
3
4
5
6
7
8
9
10
11
12

var address = "台中市沙鹿區台灣大道六段1018號";
var requestUri = string.Format("http://maps.googleapis.com/maps/api/geocode/xml?address={0}", Uri.EscapeDataString(address));

var request = WebRequest.Create(requestUri);
var response = request.GetResponse();
var xdoc = XDocument.Load(response.GetResponseStream());

var result = xdoc.Element("GeocodeResponse").Element("result");
var locationElement = result.Element("geometry").Element("location");
var lat = locationElement.Element("lat");
var lng = locationElement.Element("lng");

如果回傳格式想要是Json的話把requestUri的xml改成json就好囉!

來源:How to call Google Geocoding service from C# code