Sub GetCachedKMLfile (TrackPoints As Map) As String 'TrackPoints in my apps are: Map key - date\time, value is Lat & ";" & Long
Dim sb, track As StringBuilder, coor As String
sb.Initialize
track.Initialize
sb.Append("<?xml version="& QUOTE & "1.0" & QUOTE & " encoding=" & QUOTE & "UTF-8" & QUOTE & "?>").Append(CRLF)
sb.Append("<kml xmlns=" & QUOTE & "http://www.opengis.net/kml/2.2" & QUOTE & ">").Append(CRLF)
sb.Append("<Document>").Append(CRLF)
For i=0 To TrackPoints.Size - 1
sb.Append("<Placemark>").Append(CRLF)
sb.Append("<name>" & TrackPoints.GetKeyAt(i) & "</name>").Append(CRLF)
sb.Append("<description></description>").Append(CRLF)
sb.Append("<Point>").Append(CRLF)
coor = DecodeCoords(TrackPoints.GetValueAt(i)) ' Lat and Long separated by ","
sb.Append("<coordinates>" & coor & "</coordinates>").Append(CRLF)
sb.Append("</Point>").Append(CRLF)
sb.Append("</Placemark>").Append(CRLF)
track.Append(coor).Append(",0").Append(CRLF) 'track data including Altitude = 0
Next
sb.Append("<Placemark>").Append(CRLF)
sb.Append("<name>" & "Track" & "</name>").Append(CRLF)
sb.Append("<description></description>").Append(CRLF)
sb.Append("<LineString>").Append(CRLF)
sb.Append("<tessellate>1</tessellate>").Append(CRLF)
sb.Append("<coordinates>" & track.ToString & "</coordinates>").Append(CRLF)
sb.Append("</LineString>").Append(CRLF)
sb.Append("</Placemark>").Append(CRLF)
sb.Append("</Document>").Append(CRLF)
sb.Append("</kml>").Append(CRLF)
'Log (sb.ToString)
Dim fn As String
fn = TrackPoints.GetKeyAt(TrackPoints.Size-1) & ".kml"
fn = fn.Replace(":", "-") 'time stamps with ":" that's not allowed for file naming
File.WriteString(File.DirInternalCache, fn, sb.ToString)
Return fn
End Sub
Sub DecodeCoords (InStr As String) As String 'optional\custom sub for preparing the coords - make it according to your GPS coords data log format
Dim Res(), Finish , p1, p2 As String
Res = Regex.Split(";", InStr)
For i = 0 To Res.Length - 1
If Res(i).Contains(".") Then
Finish = Finish & Res(i) & ","
End If
Next
Finish = Finish.SubString2(0, Finish.Length - 2)
Res = Regex.Split(",", Finish)
Finish = Res(1) & "," & Res(0)
Return Finish
End Sub