15,399,959 members
Articles / Programming Languages / C#
Tip/Trick
Posted 9 Jan 2012

43.4K views
9 bookmarked

# Google Directions API Polyline Points Decoder in C#

Rate me:
9 Jan 2012CPOL
Google Directions API Polyline Points Decoder in C#
I have an algorithm for Google Directions API Polyline Points Decoder in C#. It may save you some development time.

Assuming that you have collected encoded point string from the Google Direction API Call.

C#
```private List<Location> DecodePolylinePoints(string encodedPoints)
{
if (encodedPoints == null || encodedPoints == "") return null;
List<Location> poly = new List<Location>();
char[] polylinechars = encodedPoints.ToCharArray();
int index = 0;

int currentLat = 0;
int currentLng = 0;
int next5bits;
int sum;
int shifter;

try
{
while (index < polylinechars.Length)
{
// calculate next latitude
sum = 0;
shifter = 0;
do
{
next5bits = (int)polylinechars[index++] - 63;
sum |= (next5bits & 31) << shifter;
shifter += 5;
} while (next5bits >= 32 && index < polylinechars.Length);

if (index >= polylinechars.Length)
break;

currentLat += (sum & 1) == 1 ? ~(sum >> 1) : (sum >> 1);

//calculate next longitude
sum = 0;
shifter = 0;
do
{
next5bits = (int)polylinechars[index++] - 63;
sum |= (next5bits & 31) << shifter;
shifter += 5;
} while (next5bits >= 32 && index < polylinechars.Length);

if (index >= polylinechars.Length && next5bits >= 32)
break;

currentLng += (sum & 1) == 1 ? ~(sum >> 1) : (sum >> 1);
Location p = new Location();
p.Latitude = Convert.ToDouble(currentLat) / 100000.0;
p.Longitude = Convert.ToDouble(currentLng) / 100000.0;
}
}
catch (Exception ex)
{
// logo it
}
return poly;
}```

Here `Location `is simply a class with Latitude and Longitude attributes.

## About the Author

 Software Developer (Senior) Pakistan
Expertise on Enterprise solutions, Mobile Apps & Services based applications on .NET platform. As Sr. Software Engineer, I have worked on variety of technologies like ASP.NET MVC, MS Windows Phone 7, WCF, and MS SharePoint 2010, MS Dynamics CRM.

## Comments and Discussions

 First Prev Next
 Thanks, saves me some coding time. toy4fun9-Feb-14 5:57 toy4fun 9-Feb-14 5:57
 Last Visit: 31-Dec-99 18:00     Last Update: 19-Aug-22 1:18 Refresh 1

General    News    Suggestion    Question    Bug    Answer    Joke    Praise    Rant    Admin

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.