Sample Code - Google Map API - Get Location Info by Zipcode
2015/7/31 min read
bookmark this
/// <summary> /// google map api to get location info by zipcode /// {0} is the zipcode /// </summary> private const string GOOGLEMAP_API_FORMAT = "http://maps.googleapis.com/maps/api/geocode/json?address={0}&sensor=true"; private const string GOOGLEMAP_API_RESULT_FAILED = "ZERO_RESULTS"; private const string GOOGLEMAP_API_FILTER_TYPE_STATE = "administrative_area_level_1"; private const string GOOGLEMAP_API_FILTER_TYPE_COUNTY = "administrative_area_level_2";
public LocationEntity GetLocation(string zipCode) { if (string.IsNullOrWhiteSpace(zipCode)) { return null; } LocationRootObject googleMapObj = BaseGetLocation(zipCode); if (googleMapObj == null) { return null; } return FindLocation(googleMapObj); } private LocationRootObject BaseGetLocation(string zipCode) { using (HttpClient client = new HttpClient()) { var response = client.GetAsync(string.Format(GOOGLEMAP_API_FORMAT, zipCode)); var localObj = JsonConvert.DeserializeObject<LocationRootObject>(response.Result.Content.ReadAsStringAsync().Result); if (localObj.status.Equals(GOOGLEMAP_API_RESULT_FAILED, StringComparison.CurrentCultureIgnoreCase)) { return null; } return localObj; } } private LocationEntity FindLocation(LocationRootObject localObj) { var state = localObj.results.FirstOrDefault().address_components .FirstOrDefault(_ => _.types.Contains(GOOGLEMAP_API_FILTER_TYPE_STATE)); var county = localObj.results.FirstOrDefault().address_components .FirstOrDefault(_ => _.types.Contains(GOOGLEMAP_API_FILTER_TYPE_COUNTY)); return new LocationEntity { County = county.short_name, State = state.short_name }; }