public GooglePlaceDetails Search(string placeId, out GooglePlaceRequest.GoogleResponseStatus status) { var uri = String.Format(MapUri, placeId, ApiKey); var httpRequest = (HttpWebRequest)HttpWebRequest.Create(uri); httpRequest.ContentType = "application/json; charset=utf-8"; httpRequest.Method = WebRequestMethods.Http.Get; httpRequest.Accept = "application/json"; using (HttpWebResponse httpResponse = (HttpWebResponse)httpRequest.GetResponse()) { using (var sr = new StreamReader(httpResponse.GetResponseStream())) { var json = sr.ReadToEnd(); return(GooglePlaceDetailsResult.ProcessResult(json, out status)); } } }
//public enum GooglePlaceStatus //{ // OK = 1, // REQUEST_DENIED //} public static GooglePlaceDetails ProcessResult(string googlePlaceResultJson, out GooglePlaceRequest.GoogleResponseStatus status) { var model = googlePlaceResultJson.FromJson <GooglePlaceDetailsResult>(); var details = model.result; status = model; if (details != null) { var result = new GooglePlaceDetails { Name = details.Name, Location = new GeoCoordinate(details.Geometry.Location.Lat, details.Geometry.Location.Lng), Website = details.Website, Phone = details.Formatted_Phone_Number, Url = details.Url, Photos = details.Photos == null ? new List <string>() : details.Photos.Where(p => p.Width > 1000).Select(p => p.Photo_Reference).Take(5).ToList(), OpeningHours = details.Opening_Hours == null ? new List <GooglePlaceDetails.OpenHours>() : details.Opening_Hours.Periods.Select(x => x.GetOpeningHours()).Union(GooglePlaceDetails.OpenHours.DefaultOpenHours(false), new GooglePlaceDetails.OpenHoursCompare()).ToList() }; var address = new GoogleAddress(details.ToJson()); result.Address = address.Address; result.Street = address.Street; result.Suburb = address.Suburb; result.State = address.State; result.Postcode = address.PostCode; result.Country = address.Region; return(result); } return(null); }