問題:C# Google Maps API取得資料
把地址轉成JSON格式
public GoogleGeoCodeResponse ConvertAddressToLatLng(string addr)
{
string result = string.Empty;
string googlemapkey = "你的API金鑰";
string MapUrl = String.Format("https://maps.googleapis.com/maps/api/geocode/json?");
string url = MapUrl + "address={0}&key={1}";
url = string.Format(url, addr, googlemapkey);
HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(url);
using (var response = request.GetResponse())
using (StreamReader sr = new StreamReader(response.GetResponseStream()))
{
result = sr.ReadToEnd();
}
return JsonConvert.DeserializeObject(result);
}
取得的JSON格式(20190925)
{
"results" : [
{
"address_components" : [
{
"long_name" : "122號",
"short_name" : "122號",
"types" : [ "street_number" ]
},
{
"long_name" : "Section 1, Chongqing South Road",
"short_name" : "Section 1, Chongqing South Road",
"types" : [ "route" ]
},
{
"long_name" : "Bo'ai Special Zone",
"short_name" : "Bo'ai Special Zone",
"types" : [ "neighborhood", "political" ]
},
{
"long_name" : "Zhongzheng District",
"short_name" : "Zhongzheng District",
"types" : [ "administrative_area_level_3", "political" ]
},
{
"long_name" : "Taipei City",
"short_name" : "Taipei City",
"types" : [ "administrative_area_level_1", "political" ]
},
{
"long_name" : "Taiwan",
"short_name" : "TW",
"types" : [ "country", "political" ]
},
{
"long_name" : "100",
"short_name" : "100",
"types" : [ "postal_code" ]
}
],
"formatted_address" : "No. 122號, Section 1, Chongqing South Road, Zhongzheng District, Taipei City, Taiwan 100",
"geometry" : {
"location" : {
"lat" : 25.0400826,
"lng" : 121.5119547
},
"location_type" : "ROOFTOP",
"viewport" : {
"northeast" : {
"lat" : 25.0414315802915,
"lng" : 121.5133036802915
},
"southwest" : {
"lat" : 25.03873361970849,
"lng" : 121.5106057197085
}
}
},
"place_id" : "ChIJJXNJjQqpQjQR-UfWtMFthwI",
"plus_code" : {
"compound_code" : "2GR6+2Q Zhongzheng District, 台北市 Taiwan",
"global_code" : "7QQ32GR6+2Q"
},
"types" : [ "establishment", "point_of_interest", "tourist_attraction" ]
}
],
"status" : "OK"
}
設定的結構
部份有調整過,可以自行設計
public class GoogleGeoCodeResponse
{
public string status { get; set; }
public string error_message { get; set; }
public results[] results { get; set; }
}
public class results
{
public string formatted_address { get; set; }
public geometry geometry { get; set; }
public string[] types { get; set; }
public address_component[] address_components { get; set; }
}
public class geometry
{
public string location_type { get; set; }
public location location { get; set; }
}
public class location
{
public string status { get; set; }
public string error_message { get; set; }
public string lat { get; set; }
public string lng { get; set; }
}
public class address_component
{
public string long_name { get; set; }
public string short_name { get; set; }
public string[] types { get; set; }
}
處理地址轉成json後,輸出經緯度資料
public location GetLatLngByAddr(string addr)
{
location _result = new location();
GoogleGeoCodeResponse _mapdata = new GoogleGeoCodeResponse();
_mapdata = ConvertAddressToLatLng(addr);
if (_mapdata.status == "OK")
{
_result.lat = _mapdata.results[0].geometry.location.lat;
_result.lng = _mapdata.results[0].geometry.location.lng;
}
else
{
_result.error_message = _mapdata.error_message;
}
_result.status = _mapdata.status;
return _result;
}