コード例 #1
0
        public async Task <DistanceResponse> GetDistanceAsync(DistanceRequest request)
        {
            var distanceRequest = new DistanceMatrixRequest
            {
                Origins = new[]
                {
                    new Location(request.Origin.Latitude, request.Origin.Longitude)
                },
                Destinations = new[]
                {
                    new Location(request.Destination.Latitude, request.Destination.Longitude)
                },
                TravelMode = TravelMode.Driving,
                Language   = Language.Ukrainian,
                Units      = Units.Metric,
                Key        = ServicesConstants.GOOGLE_MAPS_API_KEY
            };

            var distanceResponse = await GoogleMaps.DistanceMatrix.QueryAsync(distanceRequest);

            if (distanceResponse?.Status != Status.Ok)
            {
                return(null);
            }

            var data = distanceResponse.Rows?.First()?.Elements?.First();

            var response = new DistanceResponse
            {
                Duration = data?.Duration?.Value,
                Distance = Math.Round(data.Distance.Value / MetresInKilometer, RoundingDigits)
            };

            return(response);
        }
コード例 #2
0
 public async Task <DistanceResponse> Get(DistanceRequest request, AdminKey adminKey = null, HttpClient httpClient = null)
 {
     using (var api = new GetAddesssApi(adminKey ?? AdminKey, HttpClient ?? httpClient))
     {
         return(await api.Distance.Get(request));
     }
 }
コード例 #3
0
        public DistanceRequest CreateDistanceRequest(TaxiRequest request)
        {
            var distance = new DistanceRequest
            {
                Origin      = new Location(request.Origin.Latitude, request.Origin.Longitude),
                Destination = new Location(request.Destination.Latitude, request.Destination.Longitude)
            };

            return(distance);
        }
コード例 #4
0
        public async static Task <DistanceResponse> Get(GetAddesssApi api, string path, ApiKey apiKey, DistanceRequest request)
        {
            if (api == null)
            {
                throw new ArgumentNullException(nameof(api));
            }
            if (path == null)
            {
                throw new ArgumentNullException(nameof(path));
            }
            if (apiKey == null)
            {
                throw new ArgumentNullException(nameof(apiKey));
            }


            api.SetAuthorizationKey(apiKey);

            var fullPath = $"{path}{request.PostcodeFrom}/{request.PostcodeTo}";

            var response = await api.Get(fullPath);

            var body = await response.Content.ReadAsStringAsync();

            if (response.IsSuccessStatusCode)
            {
                var distance = Distance.FromJson(body);

                return(new DistanceResponse.Success((int)response.StatusCode, response.ReasonPhrase, body, distance));
            }

            return(new DistanceResponse.Failed((int)response.StatusCode, response.ReasonPhrase, body));
        }
コード例 #5
0
 public async Task <DistanceResponse> Get(DistanceRequest request)
 {
     return(await Get(Api, Path, this.ApiKey, request));
 }