Google.Maps.PolylineEncoder.EncodeCoordinates C# (CSharp) Method

EncodeCoordinates() public static method

Encodes the list of coordinates to a Google Maps encoded coordinate string.
public static EncodeCoordinates ( IEnumerable coordinates ) : string
coordinates IEnumerable The coordinates.
return string
        public static string EncodeCoordinates(IEnumerable<LatLng> coordinates)
        {
            double oneEFive = Convert.ToDouble(1e5);

            int plat = 0;
            int plng = 0;
            StringBuilder encodedCoordinates = new StringBuilder();

            foreach(LatLng coordinate in coordinates)
            {
                // Round to 5 decimal places and drop the decimal
                int late5 = (int)(coordinate.Latitude * oneEFive);
                int lnge5 = (int)(coordinate.Longitude * oneEFive);

                // Encode the differences between the coordinates
                encodedCoordinates.Append(EncodeSignedNumber(late5 - plat));
                encodedCoordinates.Append(EncodeSignedNumber(lnge5 - plng));

                // Store the current coordinates
                plat = late5;
                plng = lnge5;
            }

            return encodedCoordinates.ToString();
        }

Usage Example

        public void encode_coords_1()
        {
            LatLng[] points = new LatLng[] {
                new LatLng(38.5, -120.2),
                new LatLng(40.7, -120.95),
                new LatLng(43.252, -126.453)
            };

            string actual   = PolylineEncoder.EncodeCoordinates(points);
            string expected = "_p~iF~ps|U_ulLnnqC_mqNvxq`@";

            Assert.AreEqual(expected, actual);
        }