protected override QueryStringParametersList GetQueryStringParameters() { if (string.IsNullOrWhiteSpace(PlaceId)) { throw new ArgumentException("PlaceId must be provided."); } if (string.IsNullOrWhiteSpace(ApiKey)) { throw new ArgumentException("ApiKey must be provided"); } QueryStringParametersList parameters = base.GetQueryStringParameters(); parameters.Add("placeid", PlaceId); if (!string.IsNullOrWhiteSpace(Language)) { parameters.Add("language", Language); } if (!string.IsNullOrWhiteSpace(SessionToken)) { parameters.Add("sessiontoken", SessionToken); } return(parameters); }
protected override QueryStringParametersList GetQueryStringParameters() { QueryStringParametersList queryParams = base.GetQueryStringParameters(); queryParams.Add("key", apiKey); return(queryParams); }
protected virtual QueryStringParametersList GetQueryStringParameters() { QueryStringParametersList parametersList = new QueryStringParametersList(); parametersList.Add("sensor", Sensor.ToString().ToLower()); return parametersList; }
protected virtual QueryStringParametersList GetQueryStringParameters() { QueryStringParametersList parametersList = new QueryStringParametersList(); parametersList.Add("sensor", Sensor.ToString().ToLower()); return(parametersList); }
protected override QueryStringParametersList GetQueryStringParameters() { var _parameters = new QueryStringParametersList(); _parameters.Add("sensor", Sensor.ToString().ToLower()); return(_parameters); }
public void AddTest() { const string KEY = "key"; const string VALUE = "value"; var queryStringParametersList = new QueryStringParametersList { { KEY, VALUE } }; Assert.IsTrue(queryStringParametersList.Keys.Contains(KEY)); Assert.AreEqual(VALUE, queryStringParametersList[KEY]); }
/// <summary> /// Get the query string collection of added parameters for the request. /// </summary> /// <returns></returns> protected virtual QueryStringParametersList GetQueryStringParameters() { var parameters = new QueryStringParametersList(); if (!string.IsNullOrWhiteSpace(this.Key)) { parameters.Add("key", this.Key); } parameters.Add("sensor", Sensor.ToString().ToLower()); return(parameters); }
/// <summary> /// Get the query string collection of added parameters for the request. /// </summary> /// <returns></returns> protected override QueryStringParametersList GetQueryStringParameters() { if (string.IsNullOrEmpty(this.ClientId)) { return(base.GetQueryStringParameters()); } var parameters = new QueryStringParametersList { { "sensor", Sensor.ToString().ToLower() } }; return(parameters); }
public void RemoveTest() { const string KEY = "key"; const string VALUE = "value"; var queryStringParametersList = new QueryStringParametersList { { KEY, VALUE } }; queryStringParametersList.Remove(KEY); Assert.AreEqual(0, queryStringParametersList.Count); }
public void AddwhenKeyExistsTest() { const string KEY = "key"; const string VALUE = "value"; const string VALUE_NEW = "value_new"; var queryStringParametersList = new QueryStringParametersList { { KEY, VALUE }, { KEY, VALUE_NEW } }; Assert.IsTrue(queryStringParametersList.Keys.Contains(KEY)); Assert.AreEqual(VALUE_NEW, queryStringParametersList[KEY]); Assert.AreEqual(1, queryStringParametersList.Count); }
protected virtual QueryStringParametersList GetQueryStringParameters() { QueryStringParametersList parametersList = new QueryStringParametersList(); if (!string.IsNullOrWhiteSpace(ApiKey)) { if (!this.IsSSL) { throw new ArgumentException("When using an ApiKey MUST send the request over SSL [IsSSL = true]"); } parametersList.Add("key", ApiKey); } return(parametersList); }
public void GetQueryStringPostfixTest() { var queryStringParametersList = new QueryStringParametersList { { "1", "1" }, { "2", "2" }, { "3", "3" } }; var actual = queryStringParametersList.GetQueryStringPostfix(); var expected = string.Join("&", queryStringParametersList.Select(x => Uri.EscapeDataString(x.Key) + "=" + Uri.EscapeDataString(x.Value))); Assert.IsNotNull(actual); Assert.AreEqual(expected, actual); }
protected virtual QueryStringParametersList GetQueryStringParameters() { QueryStringParametersList parametersList = new QueryStringParametersList(); parametersList.Add("sensor", Sensor.ToString().ToLower()); if (!string.IsNullOrWhiteSpace(ApiKey)) { if (!this.IsSSL) { throw new ArgumentException("When using an ApiKey MUST send the request over SSL [IsSSL = true]"); } parametersList.Add("key", ApiKey); } return parametersList; }
public string decodeStyle(string styleParamsJSON) { QueryStringParametersList parametersList = new QueryStringParametersList(); JArray styleParamsGroupList = JArray.Parse(styleParamsJSON); foreach (JObject styleParamsGroup in styleParamsGroupList.Children <JObject>()) { string line = ""; foreach (JProperty styleParam in styleParamsGroup.Properties()) { JToken value = styleParam.Value; string name = styleParam.Name.ToString(); if (name == "stylers") { foreach (JProperty subParam in value.Children <JProperty>()) { JToken subValue = subParam.Value; string subName = subParam.Name.ToString(); subName = subName.Replace("Type", ""); line += subName + ":" + subValue + "|"; } } else { name = name.Replace("Type", ""); line += name + ":" + value + "|"; } } parametersList.Add("style", line); } styleParamsGroupList.Clear(); return(parametersList.GetQueryStringPostfix()); }
protected override QueryStringParametersList GetQueryStringParameters() { if (string.IsNullOrWhiteSpace(Reference)) { throw new ArgumentException("Reference must be provided."); } if (string.IsNullOrWhiteSpace(ApiKey)) { throw new ArgumentException("ApiKey must be provided"); } QueryStringParametersList parameters = base.GetQueryStringParameters(); parameters.Add("reference", Reference); if (!string.IsNullOrWhiteSpace(Language)) { parameters.Add("language", Language); } return(parameters); }
protected override QueryStringParametersList GetQueryStringParameters() { if (string.IsNullOrWhiteSpace(Query)) { throw new ArgumentException("Query must be provided."); } if (string.IsNullOrWhiteSpace(ApiKey)) { throw new ArgumentException("ApiKey must be provided"); } QueryStringParametersList parameters = base.GetQueryStringParameters(); parameters.Add("query", Query); parameters.Add("key", ApiKey); if (Location != null) { parameters.Add("location", Location.ToString()); } if (Radius != null) { parameters.Add("radius", Radius.Value.ToString(CultureInfo.InvariantCulture)); } if (!string.IsNullOrWhiteSpace(Language)) { parameters.Add("language", Language); } if (!string.IsNullOrWhiteSpace(Types)) { parameters.Add("types", Types); } return(parameters); }
public string GenerateStaticMapURL(StaticMapRequest request) { string scheme = request.IsSSL ? "https://" : "http://"; var parametersList = new QueryStringParametersList(); if (!string.IsNullOrEmpty(request.ApiKey)) { string apiKey = request.ApiKey; parametersList.Add("key", apiKey); } if (request.Center != null) { ILocationString center = request.Center; string centerLocation = center.LocationString; parametersList.Add("center", centerLocation); } if (request.Zoom != default(int)) { parametersList.Add("zoom", request.Zoom.ToString()); } if (request.Scale != default(int)) { if (!ValidScales.Contains(request.Scale)) { throw new ArgumentException("Scale is invalid; must be a value of 1, 2 or 4"); } parametersList.Add("scale", request.Scale.ToString()); } if (request.Size.Width != default(int) || request.Size.Height != default(int)) { ImageSize imageSize = request.Size; parametersList.Add("size", string.Format("{0}x{1}", imageSize.Width, imageSize.Height)); } else { throw new ArgumentException("Size is invalid"); } if (request.ImageFormat != default(ImageFormat)) { string format; switch (request.ImageFormat) { case ImageFormat.PNG8: format = "png8"; break; case ImageFormat.PNG32: format = "png32"; break; case ImageFormat.GIF: format = "gif"; break; case ImageFormat.JPG: format = "jpg"; break; case ImageFormat.JPG_baseline: format = "jpg-baseline"; break; default: throw new ArgumentOutOfRangeException("ImageFormat"); } parametersList.Add("format", format); } if (request.MapType != null) { string type; switch (request.MapType) { case MapType.Roadmap: type = "roadmap"; break; case MapType.Satellite: type = "satellite"; break; case MapType.Terrain: type = "terrain"; break; case MapType.Hybrid: type = "hybrid"; break; default: throw new ArgumentOutOfRangeException("MapType"); } parametersList.Add("maptype", type); } if (request.Style != null) { MapStyle style = request.Style; var styleComponents = new List <string>(); if (style.MapFeature != default(MapFeature)) { string mapFeature; switch (style.MapFeature) { case MapFeature.All: mapFeature = "all"; break; case MapFeature.Road: mapFeature = "road"; break; case MapFeature.Landscape: mapFeature = "landscape"; break; default: throw new ArgumentOutOfRangeException(); } styleComponents.Add("feature:" + mapFeature); } if (style.MapElement != default(MapElement)) { string element; switch (style.MapElement) { case MapElement.All: element = "all"; break; case MapElement.Geometry: element = "geometry"; break; case MapElement.Labels: element = "lables"; break; default: throw new ArgumentOutOfRangeException(); } styleComponents.Add("element:" + element); } string hue = style.HUE; if (hue != null) { styleComponents.Add("hue:" + hue); } float?lightness = style.Lightness; if (lightness != null) { styleComponents.Add("lightness:" + lightness); } float?saturation = style.Saturation; if (saturation != null) { styleComponents.Add("saturation:" + saturation); } float?gamma = style.Gamma; if (gamma != null) { styleComponents.Add("gamma:" + gamma); } bool inverseLightness = style.InverseLightness; if (inverseLightness) { styleComponents.Add("inverse_lightnes:true"); } MapVisibility mapVisibility = style.MapVisibility; if (mapVisibility != default(MapVisibility)) { string visibility; switch (mapVisibility) { case MapVisibility.On: visibility = "on"; break; case MapVisibility.Off: visibility = "off"; break; case MapVisibility.Simplified: visibility = "simplified"; break; default: throw new ArgumentOutOfRangeException(); } styleComponents.Add("visibility:" + visibility); } parametersList.Add("style", string.Join("|", styleComponents)); } IList <Marker> markers = request.Markers; if (markers != null) { foreach (Marker marker in markers) { var markerStyleParams = new List <string>(); MarkerStyle markerStyle = marker.Style; if (markerStyle != null) { if (string.IsNullOrWhiteSpace(markerStyle.Color)) { throw new ArgumentException("Marker style color can't be empty"); } markerStyleParams.Add("color:" + markerStyle.Color); if (!string.IsNullOrWhiteSpace(markerStyle.Label)) { markerStyleParams.Add("label:" + markerStyle.Label); } if (markerStyle.Size != default(MarkerSize)) { switch (markerStyle.Size) { case MarkerSize.Mid: markerStyleParams.Add("size:mid"); break; case MarkerSize.Tiny: markerStyleParams.Add("size:tiny"); break; case MarkerSize.Small: markerStyleParams.Add("size:small"); break; default: throw new ArgumentOutOfRangeException(); } } } string styleString = string.Join("|", markerStyleParams); string locations = string.Join("|", marker.Locations.Select(location => location.LocationString)); parametersList.Add("markers", string.Format("{0}|{1}", styleString, locations)); } } IList <Path> pathes = request.Pathes; if (pathes != null) { foreach (Path path in pathes) { var pathStyleParams = new List <string>(); PathStyle pathStyle = path.Style; if (pathStyle != null) { if (string.IsNullOrWhiteSpace(pathStyle.Color)) { throw new ArgumentException("Path style color can't be empty"); } pathStyleParams.Add("color:" + pathStyle.Color); if (!string.IsNullOrWhiteSpace(pathStyle.FillColor)) { pathStyleParams.Add("fillcolor:" + pathStyle.FillColor); } if (pathStyle.Weight != default(int)) { pathStyleParams.Add("weight:" + pathStyle.Weight); } } string styleString = string.Join("|", pathStyleParams); string locations = string.Join("|", path.Locations.Select(location => location.LocationString)); parametersList.Add("path", string.Format("{0}|{1}", styleString, locations)); } } return(scheme + BaseUrl + "?" + parametersList.GetQueryStringPostfix()); }
public string GenerateStaticMapURL(StaticMapRequest request) { string scheme = request.IsSSL ? "https://" : "http://"; var parametersList = new QueryStringParametersList(); if (request.Center != null) { ILocationString center = request.Center; string centerLocation = center.LocationString; parametersList.Add("center", centerLocation); } if (request.Zoom != default(int)) { parametersList.Add("zoom", request.Zoom.ToString()); } if (request.Size.Width != default(int) || request.Size.Height != default(int)) { ImageSize imageSize = request.Size; parametersList.Add("size", string.Format("{0}x{1}", imageSize.Width, imageSize.Height)); } else { throw new ArgumentException("Size is invalid"); } if (request.ImageFormat != default(ImageFormat)) { string format; switch (request.ImageFormat) { case ImageFormat.PNG8: format = "png8"; break; case ImageFormat.PNG32: format = "png32"; break; case ImageFormat.GIF: format = "gif"; break; case ImageFormat.JPG: format = "jpg"; break; case ImageFormat.JPG_baseline: format = "jpg-baseline"; break; default: throw new ArgumentOutOfRangeException("ImageFormat"); } parametersList.Add("format", format); } if (request.MapType != null) { string type; switch (request.MapType) { case MapType.Roadmap: type = "roadmap"; break; case MapType.Satellite: type = "satellite"; break; case MapType.Terrain: type = "terrain"; break; case MapType.Hybrid: type = "hybrid"; break; default: throw new ArgumentOutOfRangeException("MapType"); } parametersList.Add("maptype", type); } if (request.Style != null) { MapStyle style = request.Style; var styleComponents = new List<string>(); if (style.MapFeature != default(MapFeature)) { string mapFeature; switch (style.MapFeature) { case MapFeature.All: mapFeature = "all"; break; case MapFeature.Road: mapFeature = "road"; break; case MapFeature.Landscape: mapFeature = "landscape"; break; default: throw new ArgumentOutOfRangeException(); } styleComponents.Add("feature:" + mapFeature); } if (style.MapElement != default(MapElement)) { string element; switch (style.MapElement) { case MapElement.All: element = "all"; break; case MapElement.Geometry: element = "geometry"; break; case MapElement.Labels: element = "lables"; break; default: throw new ArgumentOutOfRangeException(); } styleComponents.Add("element:" + element); } string hue = style.HUE; if (hue != null) { styleComponents.Add("hue:" + hue); } float? lightness = style.Lightness; if (lightness != null) { styleComponents.Add("lightness:" + lightness); } float? saturation = style.Saturation; if (saturation != null) { styleComponents.Add("saturation:" + saturation); } float? gamma = style.Gamma; if (gamma != null) { styleComponents.Add("gamma:" + gamma); } bool inverseLightness = style.InverseLightness; if (inverseLightness) { styleComponents.Add("inverse_lightnes:true"); } MapVisibility mapVisibility = style.MapVisibility; if (mapVisibility != default(MapVisibility)) { string visibility; switch (mapVisibility) { case MapVisibility.On: visibility = "on"; break; case MapVisibility.Off: visibility = "off"; break; case MapVisibility.Simplified: visibility = "simplified"; break; default: throw new ArgumentOutOfRangeException(); } styleComponents.Add("visibility:" + visibility); } parametersList.Add("style", string.Join("|", styleComponents)); } IList<Marker> markers = request.Markers; if (markers != null) { foreach (Marker marker in markers) { var markerStyleParams = new List<string>(); MarkerStyle markerStyle = marker.Style; if (markerStyle != null) { if (string.IsNullOrWhiteSpace(markerStyle.Color)) { throw new ArgumentException("Marker style color can't be empty"); } markerStyleParams.Add("color:" + markerStyle.Color); if (!string.IsNullOrWhiteSpace(markerStyle.Label)) { markerStyleParams.Add("label:" + markerStyle.Label); } if (markerStyle.Size != default(MarkerSize)) { switch (markerStyle.Size) { case MarkerSize.Mid: markerStyleParams.Add("size:mid"); break; case MarkerSize.Tiny: markerStyleParams.Add("size:tiny"); break; case MarkerSize.Small: markerStyleParams.Add("size:small"); break; default: throw new ArgumentOutOfRangeException(); } } } string styleString = string.Join("|", markerStyleParams); string locations = string.Join("|", marker.Locations.Select(location => location.LocationString)); parametersList.Add("markers", string.Format("{0}|{1}", styleString, locations)); } } IList<Path> pathes = request.Pathes; if (pathes != null) { foreach (Path path in pathes) { var pathStyleParams = new List<string>(); PathStyle pathStyle = path.Style; if (pathStyle != null) { if (string.IsNullOrWhiteSpace(pathStyle.Color)) { throw new ArgumentException("Path style color can't be empty"); } pathStyleParams.Add("color:" + pathStyle.Color); if (!string.IsNullOrWhiteSpace(pathStyle.FillColor)) { pathStyleParams.Add("fillcolor:" + pathStyle.FillColor); } if (pathStyle.Weight != default(int)) { pathStyleParams.Add("weight:" + pathStyle.Weight); } } string styleString = string.Join("|", pathStyleParams); string locations = string.Join("|", path.Locations.Select(location => location.LocationString)); parametersList.Add("path", string.Format("{0}|{1}", styleString, locations)); } } parametersList.Add("sensor", request.Sensor ? "true" : "false"); return scheme + BaseUrl + "?" + parametersList.GetQueryStringPostfix(); }
/// <summary>Generates the static map URL.</summary> /// <param name="request">The request.</param> /// <returns>The <see cref="string"/></returns> /// <exception cref="System.ArgumentException"> /// Size is invalid /// or /// Marker style color can't be empty /// or /// Path style color can't be empty /// </exception> /// <exception cref="System.ArgumentOutOfRangeException"> /// Request image format is unknown. /// </exception> public string GenerateStaticMapUrl(StaticMapRequest request) { var scheme = request.IsSSL ? "https://" : "http://"; var parametersList = new QueryStringParametersList(); if (request.Center != null) { var center = request.Center; var centerLocation = center.LocationString; parametersList.Add("center", centerLocation); } if (request.Zoom != default(byte)) { parametersList.Add("zoom", request.Zoom.ToString()); } if (request.Size.Width != default(int) || request.Size.Height != default(int)) { var imageSize = request.Size; parametersList.Add("size", $"{imageSize.Width}x{imageSize.Height}"); } else { throw new ArgumentException("Size is invalid"); } if (request.ImageFormat != default(ImageFormat)) { string format; switch (request.ImageFormat) { case ImageFormat.Png8: format = "png8"; break; case ImageFormat.Png32: format = "png32"; break; case ImageFormat.Gif: format = "gif"; break; case ImageFormat.Jpg: format = "jpg"; break; case ImageFormat.JpgBaseline: format = "jpg-baseline"; break; default: throw new ArgumentOutOfRangeException(nameof(request.ImageFormat)); } parametersList.Add("format", format); } if (request.MapType != null) { string type; switch (request.MapType) { case MapType.Roadmap: type = "roadmap"; break; case MapType.Satellite: type = "satellite"; break; case MapType.Terrain: type = "terrain"; break; case MapType.Hybrid: type = "hybrid"; break; default: throw new ArgumentOutOfRangeException(nameof(request.MapType)); } parametersList.Add("maptype", type); } if (request.Style != null) { foreach (var style in request.Style) { var styleComponents = new List<string>(); if (style.MapFeature != default(MapFeature)) { string mapFeature; switch (style.MapFeature) { case MapFeature.All: mapFeature = "all"; break; case MapFeature.Administrative: mapFeature = "administrative"; break; case MapFeature.AdministrativeCountry: mapFeature = "administrative.country"; break; case MapFeature.AdministrativeLandParcel: mapFeature = "administrative.land_parcel"; break; case MapFeature.AdministrativeLocality: mapFeature = "administrative.locality"; break; case MapFeature.AdministrativeNeighborhood: mapFeature = "administrative.neighborhood"; break; case MapFeature.AdministrativeProvince: mapFeature = "administrative.province"; break; case MapFeature.Landscape: mapFeature = "landscape"; break; case MapFeature.LandscapeManMade: mapFeature = "landscape.man_made"; break; case MapFeature.LandscapeNatural: mapFeature = "landscape.natural"; break; case MapFeature.LandscapeNaturalLandcover: mapFeature = "landscape.natural.landcover"; break; case MapFeature.LandscapeNaturalTerrain: mapFeature = "landscape.natural.terrain"; break; case MapFeature.Poi: mapFeature = "poi"; break; case MapFeature.PoiAttraction: mapFeature = "poi.attraction"; break; case MapFeature.PoiBusiness: mapFeature = "poi.business"; break; case MapFeature.PoiGovernment: mapFeature = "poi.government"; break; case MapFeature.PoiMedical: mapFeature = "poi.medical"; break; case MapFeature.PoiPark: mapFeature = "poi.park"; break; case MapFeature.PoiPlaceOfWorship: mapFeature = "poi.place_of_worship"; break; case MapFeature.PoiSchool: mapFeature = "poi.school"; break; case MapFeature.PoiSportsComplex: mapFeature = "poi.sports_complex"; break; case MapFeature.Road: mapFeature = "road"; break; case MapFeature.RoadArterial: mapFeature = "road.arterial"; break; case MapFeature.RoadHighway: mapFeature = "road.highway"; break; case MapFeature.RoadHighwayControlledAccess: mapFeature = "road.highway.controlled_access"; break; case MapFeature.RoadLocal: mapFeature = "road.local"; break; case MapFeature.Transit: mapFeature = "transit"; break; case MapFeature.TransitLine: mapFeature = "transit.line"; break; case MapFeature.TransitStation: mapFeature = "transit.station"; break; case MapFeature.TransitStationAirport: mapFeature = "transit.station.airport"; break; case MapFeature.TransitStationBus: mapFeature = "transit.station.bus"; break; case MapFeature.TransitStationRail: mapFeature = "transit.station.rail"; break; case MapFeature.Water: mapFeature = "water"; break; default: throw new ArgumentOutOfRangeException(nameof(style.MapFeature)); } styleComponents.Add("feature:" + mapFeature); } if (style.MapElement != default(MapElement)) { string element; switch (style.MapElement) { case MapElement.All: element = "all"; break; case MapElement.Geometry: element = "geometry"; break; case MapElement.GeometryFill: element = "geometry.fill"; break; case MapElement.GeometryStroke: element = "geometry.stroke"; break; case MapElement.Labels: element = "lables"; break; case MapElement.LabelsIcon: element = "labels.icon"; break; case MapElement.LabelsText: element = "labels.text"; break; case MapElement.LabelsTextFill: element = "labels.text.fill"; break; case MapElement.LabelsTextStroke: element = "labels.text.stroke"; break; default: throw new ArgumentOutOfRangeException(nameof(style.MapElement)); } styleComponents.Add("element:" + element); } if (style.HUE != default(Color)) { styleComponents.Add("hue:0x" + ColorToHexConverter(style.HUE)); } var lightness = style.Lightness; if (lightness != null) { if (lightness < -100 || lightness > 100) { throw new ArgumentOutOfRangeException(nameof(style.Lightness)); } styleComponents.Add("lightness:" + lightness); } var saturation = style.Saturation; if (saturation != null) { if (saturation < -100 || saturation > 100) { throw new ArgumentOutOfRangeException(nameof(style.Saturation)); } styleComponents.Add("saturation:" + saturation); } var gamma = style.Gamma; if (gamma != null && gamma != 1.0) { if (gamma < 0.01 || gamma > 10.0) { throw new ArgumentOutOfRangeException(nameof(style.Gamma)); } styleComponents.Add("gamma:" + gamma); } var inverseLightness = style.InvertLightness; if (inverseLightness) { styleComponents.Add("inverse_lightnes:true"); } if (style.Weight != default(int)) { if (style.Weight < 0) { throw new ArgumentOutOfRangeException(nameof(style.Weight)); } styleComponents.Add("weight:" + style.Weight); } if (style.Color != default(Color)) { styleComponents.Add("color:0x" + ColorToHexConverter(style.Color)); } var mapVisibility = style.Visibility; if (mapVisibility != default(MapVisibility)) { string visibility; switch (mapVisibility) { case MapVisibility.On: visibility = "on"; break; case MapVisibility.Off: visibility = "off"; break; case MapVisibility.Simplified: visibility = "simplified"; break; default: throw new ArgumentOutOfRangeException(nameof(style.Visibility)); } styleComponents.Add("visibility:" + visibility); } parametersList.Add("style", string.Join("|", styleComponents)); } } var markers = request.Markers; if (markers != null) { foreach (var marker in markers) { var markerStyleParams = new List<string>(); var markerStyle = marker.Style; if (markerStyle != null) { if (string.IsNullOrWhiteSpace(markerStyle.Color)) { throw new ArgumentException("Marker style color can't be empty"); } markerStyleParams.Add("color:" + markerStyle.Color); if (!string.IsNullOrWhiteSpace(markerStyle.Label)) { markerStyleParams.Add("label:" + markerStyle.Label); } if (markerStyle.Size != default(MarkerSize)) { switch (markerStyle.Size) { case MarkerSize.Mid: markerStyleParams.Add("size:mid"); break; case MarkerSize.Tiny: markerStyleParams.Add("size:tiny"); break; case MarkerSize.Small: markerStyleParams.Add("size:small"); break; default: throw new ArgumentOutOfRangeException(); } } } var styleString = string.Join("|", markerStyleParams); var locations = string.Join("|", marker.Locations.Select(location => location.LocationString)); parametersList.Add("markers", $"{styleString}|{locations}"); } } var pathes = request.Pathes; if (pathes != null) { foreach (var path in pathes) { var pathStyleParams = new List<string>(); var pathStyle = path.Style; if (pathStyle != null) { if (string.IsNullOrWhiteSpace(pathStyle.Color)) { throw new ArgumentException("Path style color can't be empty"); } pathStyleParams.Add("color:" + pathStyle.Color); if (!string.IsNullOrWhiteSpace(pathStyle.FillColor)) { pathStyleParams.Add("fillcolor:" + pathStyle.FillColor); } if (pathStyle.Weight != default(int)) { pathStyleParams.Add("weight:" + pathStyle.Weight); } } var styleString = string.Join("|", pathStyleParams); var locations = string.Join("|", path.Locations.Select(location => location.LocationString)); parametersList.Add("path", $"{styleString}|{locations}"); } } parametersList.Add("sensor", request.Sensor ? "true" : "false"); return scheme + BaseUrl + "?" + parametersList.GetQueryStringPostfix(); }