Google.Maps.StaticMaps.StaticMapRequest.ToUri C# (CSharp) Method

ToUri() public method

public ToUri ( ) : Uri
return System.Uri
        public Uri ToUri()
        {
            EnsureSensor(true);

            string formatStr = null;
            switch(this.Format)
            {
                case GMapsImageFormats.Unspecified: break;
                case GMapsImageFormats.JPGbaseline: formatStr = "jpg-baseline"; break;
                default: formatStr = this.Format.ToString().ToLower(); break;
            }

            string maptypeStr = null;
            switch(this.MapType)
            {
                case MapTypes.Unspecified: break;
                default:
                    maptypeStr = this.MapType.ToString().ToLower();
                    break;
            }

            string zoomStr = null;
            if(this.Zoom != null)
                zoomStr = this.Zoom.ToString();

            string centerStr = null;
            if(this.Center != null)
                centerStr = this.Center.GetAsUrlParameter();

            QueryStringBuilder qs = new QueryStringBuilder()
                .Append("center", centerStr)
                .Append("zoom", zoomStr)
                .Append("size", string.Format(System.Globalization.CultureInfo.InvariantCulture, "{0}x{1}", Size.Width, Size.Height))
                .Append("scale", Scale == null ? (string)null : Scale.Value.ToString())
                .Append("format", formatStr)
                .Append("maptype", maptypeStr)
                .Append("language", Language)
                .Append("region", this.Region)
                .Append(GetMarkersStr())
                .Append(GetPathsStr())
                .Append("visible", GetVisibleStr())
                .Append("sensor", (Sensor == true ? "true" : "false"));

            var url = "staticmap?" + qs.ToString();

            return new Uri(BaseUri, new Uri(url, UriKind.Relative));
        }

Usage Example

        public void Markers_ShouldNotUseExtraZeros_BecauseUrlLengthIsLimited()
        {
            StaticMapRequest map = new StaticMapRequest();

            map.Markers.Add(new LatLng(40.0, -60.0));
            map.Markers.Add(new LatLng(41.1, -61.1));
            map.Markers.Add(new LatLng(42.22, -62.22));
            map.Markers.Add(new LatLng(44.444, -64.444));
            map.Markers.Add(new LatLng(45.5555, -65.5555));
            map.Markers.Add(new LatLng(46.66666, -66.66666));
            map.Markers.Add(new LatLng(47.777777, -67.777777));
            map.Markers.Add(new LatLng(48.8888888, -68.8888888));
            // based on this http://gis.stackexchange.com/a/8674/15274,
            // I'm not too concerned about more than 7 decimals of precision.

            string actual = map.ToUri().Query;

            StringAssert.Contains("markers=40,-60&", actual);
            StringAssert.Contains("markers=41.1,-61.1&", actual);
            StringAssert.Contains("markers=42.22,-62.22&", actual);
            StringAssert.Contains("markers=44.444,-64.444&", actual);
            StringAssert.Contains("markers=45.5555,-65.5555&", actual);
            StringAssert.Contains("markers=46.66666,-66.66666&", actual);
            StringAssert.Contains("markers=47.777777,-67.777777&", actual);
            StringAssert.Contains("markers=48.8888888,-68.8888888", actual);
        }
All Usage Examples Of Google.Maps.StaticMaps.StaticMapRequest::ToUri