public async Task <GoogleDirectionsRootObject> GetAsync(GoogleDirectionsInput input)
        {
            var uri        = _googleUriProvider.Create(input);
            var resultJson = await _httpClient.GetStringAsync(uri);

            var result = JsonConvert.DeserializeObject <GoogleDirectionsRootObject>(resultJson);

            result.resultJson = resultJson;
            result.inputUri   = uri;
            return(result);
        }
Пример #2
0
        public string Create(GoogleDirectionsInput input)
        {
            StringBuilder builder = new StringBuilder();

            builder.Append($"{Output}?key={GoogleApiKey}");
            if (!String.IsNullOrWhiteSpace(input.OriginPlaceId) && !String.IsNullOrWhiteSpace(input.DestinationPlaceId))
            {
                builder.Append($"&origin=place_id:{input.OriginPlaceId}");
                builder.Append($"&destination=place_id:{input.DestinationPlaceId}");
            }
            else
            {
                builder.Append($"&origin={input.OriginLoc.lat.ToString(System.Globalization.CultureInfo.InvariantCulture)},{input.OriginLoc.lng.ToString(System.Globalization.CultureInfo.InvariantCulture)}");
                builder.Append($"&destination={input.DestinationLoc.lat.ToString(System.Globalization.CultureInfo.InvariantCulture)},{input.DestinationLoc.lng.ToString(System.Globalization.CultureInfo.InvariantCulture)}");
            }
            builder.Append($"&language={input.Language.GetString()}");
            builder.Append($"&mode={input.Mode.GetString()}");

            if (input.WaypointsLoc.Any())
            {
                builder.Append($"&waypoints=");

                if (input.OptimizeWaypoints)
                {
                    builder.Append($"optimize:true|");
                }

                var waypoints = ConvertLocationsToString(input.WaypointsLoc);

                builder.Append($"{waypoints}");
            }

            if (input.Restrictions != Enums.GoogleRestrictions.none)
            {
                builder.Append($"&avoid={input.Restrictions.GetString()}");
            }

            builder.Append($"&units={input.Units}");

            if (input.Departure_time != null)
            {
                builder.Append($"&departure_time={input.Departure_time}");
            }

            if (input.Mode == Enums.GoogleTravelMode.Transit && input.TransitRouting != Enums.TransitRoutingPreference.none)
            {
                builder.Append($"&transit_routing_preference={input.TransitRouting.GetString()}");
            }

            return(builder.ToString());
        }