Here`s an implementation of the Google Encode Polyline algorithm in Xojo which is used to convert an array of coordinates into a single string.

Here`s a test suite to test your results: Interactive Polyline Encoder Utility  |  Google Maps Platform  |  Google Developers

You’re then able to create static map images with mapbox for example.

``````Protected Function encodePolyline(coordinates() as pair, usePrintserver as Boolean = false) as string
Var ret As String

Var oldLat, oldLng As Double = 0
For i As Integer = 0 To coordinates.Ubound
Var newLat, newLng As Double

If oldLat = 0 And oldLng = 0 Then
newLat = coordinates(i).Left.DoubleValue
newLng = coordinates(i).Right.DoubleValue
Else
newLat = coordinates(i).Left.DoubleValue - oldLat
newLng = coordinates(i).Right.DoubleValue - oldLng
End If

ret = ret + encodePolylineLeg(newLat)
ret = ret + encodePolylineLeg(newLng)

oldLat = coordinates(i).Left.DoubleValue
oldLng = coordinates(i).Right.DoubleValue

Next

Return ret
End Function
``````
``````Private Function encodePolylineLeg(value as double) as string
Var s As String
Var base As Integer = 256 ^ 4
Var minus As Boolean = (value < 0)

If minus Then
value = -value
End If

Var x As Integer = value * 100000
//Break

If minus Then
x = base - x
End If

x = x * 2

If minus Then
x = (base * 2) - 1 - x
End If

While x > 0
Var y As Integer
y = x Mod 32
x = x / 32

If x > 0 Then
y = y + 32
End If

y = y + 63

//Self.charcodes = Self.charcodes + y.ToString + " "
s = s + Encodings.ASCII.Chr(y)

Wend

Return s
End Function

``````
2 Likes