把地址轉成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; }
沒有留言:
張貼留言