Пример #1
0
        private GeocodeResult <Result> GetBestGeocodeResult(AzureMapsGeocodeResult geocodeResult, SourceAddress source)
        {
            var result = new GeocodeResult <Result>();

            if (geocodeResult.Results.Count == 0)
            {
                result.Status = "ZERO_RESULT";
                return(result);
            }

            var best = geocodeResult.Results[0]; //The best result

            /*types:
             * Point Address (PAD):Indicates a precise street address
             * Points of Interest (POI):defines and locates residential, business and public postal addresses
             *
             */
            if (best.Type.Equals("Point Address") || best.Type.Equals("POI"))
            {
                result.Status = best.Address.PostalCode.Equals(source.PostalCode) ? "OK" : "TO_CHECK";
            }
            else
            {
                result.Status = "TO_CHECK";
            }

            result.Result = best;
            return(result);
        }
Пример #2
0
        public async Task GeocodeAsync(SourceAddress source)
        {
            using (HttpClient client = new HttpClient())
            {
                client.DefaultRequestHeaders.Accept.Add(
                    new System.Net.Http.Headers.MediaTypeWithQualityHeaderValue("application/json"));

                var response = await client.GetAsync(BuildUrlRequest(source));

                if (response.IsSuccessStatusCode)
                {
                    string content = await response.Content.ReadAsStringAsync();

                    AzureMapsGeocodeResult geocodeResult = JsonConvert.DeserializeObject <AzureMapsGeocodeResult>(content);
                    GeocodeResult <Result> bestResult    = GetBestGeocodeResult(geocodeResult, source);

                    string freeformAddress = bestResult.Result == null ? "NULL" : bestResult.Result.Address.FreeformAddress;
                    string resultType      = bestResult.Result == null ? "NULL" : bestResult.Result.Type;

                    ReportComparer.SaveAndDisplay(path, $"Azure Maps;{source.Id};{source.Address};{source.Locality};{source.PostalCode};{source.Country};{resultType};{freeformAddress};{bestResult.Status};{geocodeResult.Summary.NumResults}");
                }
                else
                {
                    //var error = await response.Content.ReadAsAsync<ErrorResponse>();
                    Console.WriteLine("Azure HTTP Error");
                    ReportComparer.SaveAndDisplay(path, $"Azure Maps;{source.Id};{source.Address};{source.Locality};{source.PostalCode};{source.Country};NULL;NULL;ZERO_RESULT;0");
                }
            }
        }