public async Task <PlaceDetailsResult> GetPlaceDetailsAsync(string placeId, CancellationToken ct) { var now = DateTime.Now; UriBuilder baseUri = new UriBuilder(baseUrl + placeDetailsResource); AppendQuery(baseUri, placeIdKey, placeId); AppendQuery(baseUri, typesParamString, fieldsString); AppendQuery(baseUri, apiKeyParamKey, apiKey); WebRequest request = WebRequest.Create(baseUri.ToString()); request.Proxy = null; var response = await request.GetResponseAsync(ct); StreamReader reader = new StreamReader(response.GetResponseStream()); string responseText = reader.ReadToEnd(); PlaceDetailsResult results = JsonConvert.DeserializeObject <PlaceDetailsResult>(responseText); var start = now; now = DateTime.Now; return(results); }
private async Task <string> GetFullAddressString() { try { if (suggestionsList.SelectedIndex >= 0) { string placeId = AddressPlaceIds[(string)suggestionsList.SelectedItem]; PlaceDetailsResult placeDetailsResult = await addressAutoCompletionService.GetPlaceDetailsAsync(placeId, cts.Token); Address address = new Address(); if (placeDetailsResult.Status == "OK" && placeDetailsResult.Result?.Address_Components != null && placeDetailsResult.Result.Address_Components.Any()) { foreach (PlaceDetailsResult.AddressComponent addressComponent in placeDetailsResult.Result .Address_Components) { if (addressComponent.Types.Any(x => x == "street_number")) { address.StreetNo = addressComponent.Short_Name; } else if (addressComponent.Types.Any(x => x == "route")) { address.StreetName = addressComponent.Short_Name; } else if (addressComponent.Types.Any(x => x == "locality")) { address.Locality = addressComponent.Short_Name; } else if (addressComponent.Types.Any(x => x == "administrative_area_level_1")) { address.StateOrTerritory = addressComponent.Short_Name; } else if (addressComponent.Types.Any(x => x == "country")) { address.Country = addressComponent.Long_Name; } else if (addressComponent.Types.Any(x => x == "postal_code")) { address.PostCode = addressComponent.Short_Name; } } } return(address.ToString()); } } catch (OperationCanceledException) { } return(null); }