fork(1) download
  1. Imports System
  2.  
  3. Imports System.Xml
  4. Imports System.Text
  5.  
  6. Imports System.Collections.Generic
  7.  
  8. Public Class Test
  9. Public Shared Sub Main()
  10.  
  11. Dim itiner As New KmlManage.Itinerario()
  12. itiner.SetTitolo("Titolo")
  13. itiner.SetDescrizione("Descrizione")
  14. itiner.SetItineraioCodice("ItinerarioCodice")
  15.  
  16.  
  17. Dim posiz As New KmlManage.Posizioni()
  18. Dim posizione As New KmlManage.Posizione()
  19. posizione.SetLatitude(37.810453)
  20. posizione.SetLongitude(-122.410617)
  21. posiz.AddPosizione(posizione)
  22.  
  23. posizione = New KmlManage.Posizione()
  24. posizione.SetLatitude(36.810453)
  25. posizione.SetLongitude(-121.410617)
  26. posiz.AddPosizione(posizione)
  27.  
  28. posizione = New KmlManage.Posizione()
  29. posizione.SetLatitude(35.810453)
  30. posizione.SetLongitude(-120.410617)
  31. posiz.AddPosizione(posizione)
  32.  
  33. posizione = New KmlManage.Posizione()
  34. posizione.SetLatitude(34.810453)
  35. posizione.SetLongitude(-119.410617)
  36. posiz.AddPosizione(posizione)
  37.  
  38. posizione = New KmlManage.Posizione()
  39. posizione.SetLatitude(33.810453)
  40. posizione.SetLongitude(-118.410617)
  41. posiz.AddPosizione(posizione)
  42.  
  43. Dim kmlWrite As New KmlManage(itiner, posiz)
  44. kmlWrite.Generate()
  45.  
  46. End Sub
  47. End Class
  48.  
  49. Public Class KmlManage
  50.  
  51. Protected itinerarioWrite As Itinerario
  52. Protected posizioniWrite As Posizioni
  53.  
  54. Public Sub New(itinerario As Itinerario, posizioni As Posizioni)
  55. Me.itinerarioWrite = itinerario
  56. Me.posizioniWrite = posizioni
  57. End Sub
  58.  
  59. Public Function Generate() As Boolean
  60. Dim ret As Boolean = False
  61.  
  62. Try
  63.  
  64. If IsNothing(itinerarioWrite) Then Throw New Exception("Errore impostazione itinerario")
  65. If IsNothing(posizioniWrite) Then Throw New Exception("Errore impostazione posizini")
  66.  
  67. Dim lista As List(Of Posizione) = posizioniWrite.GetLista()
  68. If (lista.Count = 0) Then Throw New Exception("Errore numero posizioni")
  69.  
  70. Dim nomeFile As String = itinerarioWrite.GetItinerarioCodice()
  71.  
  72. Dim idStyle As String = "LineGreenPoly"
  73. Dim coordinate As String = String.Empty
  74.  
  75. Dim defineTypeKml = "http://w...content-available-to-author-only...s.net/kml/2.2"
  76.  
  77. For Each posizione As Posizione In lista
  78. Dim altitude As String = posizione.GetAltitude().ToString().Replace(",", ".")
  79. If (posizione.GetAltitude() = 0) Then altitude = "0.0"
  80.  
  81. Dim line As String = posizione.GetLongitude().ToString().Replace(",", ".")
  82. line += "," + posizione.GetLatitude().ToString().Replace(",", ".")
  83. line += "," + altitude
  84. line += " "
  85.  
  86. coordinate += line
  87. Next
  88.  
  89. If (String.IsNullOrEmpty(coordinate)) Then Throw New Exception("Errore coordinate")
  90.  
  91. Dim settings As XmlWriterSettings = New XmlWriterSettings()
  92. settings.Indent = True
  93. settings.Encoding = New ASCIIEncoding()
  94.  
  95. Using writer As XmlWriter = XmlWriter.Create(nomeFile + ".xml", settings)
  96.  
  97. writer.WriteStartDocument()
  98. writer.WriteStartElement("kml")
  99. writer.WriteAttributeString("xmlns", "kml", Nothing, defineTypeKml)
  100.  
  101. writer.WriteStartElement("Document")
  102.  
  103. writer.WriteElementString("name", itinerarioWrite.GetTitolo)
  104. writer.WriteRaw("<description><![CDATA[" + itinerarioWrite.GetDescrizione + "]]></description>")
  105.  
  106. writer.WriteStartElement("Style")
  107. writer.WriteAttributeString("id", idStyle)
  108.  
  109. writer.WriteStartElement("LineStyle")
  110. writer.WriteElementString("color", itinerarioWrite.GetColor)
  111. writer.WriteElementString("width", itinerarioWrite.GetWidth.ToString())
  112. writer.WriteEndElement()
  113.  
  114. writer.WriteStartElement("PolyStyle")
  115. writer.WriteElementString("color", itinerarioWrite.GetColor)
  116. writer.WriteEndElement()
  117.  
  118. writer.WriteEndElement()
  119.  
  120. writer.WriteStartElement("Folder")
  121.  
  122. writer.WriteElementString("name", itinerarioWrite.GetTitolo)
  123.  
  124. writer.WriteStartElement("Placemark")
  125.  
  126. writer.WriteElementString("styleUrl", "#" + idStyle)
  127. writer.WriteElementString("name", itinerarioWrite.GetTitolo)
  128. writer.WriteRaw("<description><![CDATA[" + itinerarioWrite.GetDescrizione + "]]></description>")
  129.  
  130. writer.WriteStartElement("LineString")
  131.  
  132. writer.WriteElementString("extrude", "1")
  133. writer.WriteElementString("tessellate", "1")
  134.  
  135. writer.WriteElementString("coordinates", coordinate) ' Lista di tutte le coordinate
  136.  
  137. writer.WriteEndElement()
  138.  
  139. writer.WriteEndElement()
  140. writer.WriteEndElement()
  141.  
  142. ' End document.
  143. writer.WriteEndElement()
  144. writer.WriteEndElement()
  145. writer.WriteEndDocument()
  146.  
  147. End Using
  148.  
  149. ret = True
  150.  
  151. Catch ex As Exception
  152.  
  153.  
  154. End Try
  155.  
  156. Return ret
  157. End Function
  158.  
  159. Public Class Itinerario
  160. Protected titolo As String
  161. Protected descrizione As String
  162. Protected itinerariocodice As String
  163.  
  164. Protected color As String = "7f00ffff"
  165. Protected width As Integer = 4
  166.  
  167. Public Function GetWidth() As Integer
  168. Return Me.width
  169. End Function
  170.  
  171. Public Sub SetWidth(color As Integer)
  172. Me.width = width
  173. End Sub
  174.  
  175. Public Function GetColor() As String
  176. Return Me.color
  177. End Function
  178.  
  179. Public Sub SetColor(color As String)
  180. Me.color = color
  181. End Sub
  182.  
  183. Public Function GetDescrizione() As String
  184. Return Me.descrizione
  185. End Function
  186.  
  187. Public Function GetTitolo() As String
  188. Return Me.titolo
  189. End Function
  190.  
  191. Public Function GetItinerarioCodice() As String
  192. Return Me.itinerariocodice
  193. End Function
  194.  
  195. Public Sub SetTitolo(titolo As String)
  196. Me.titolo = titolo
  197. End Sub
  198.  
  199. Public Sub SetDescrizione(descrizione As String)
  200. Me.descrizione = descrizione
  201. End Sub
  202.  
  203. Public Sub SetItineraioCodice(itinerarioCodice As String)
  204. Me.itinerariocodice = itinerarioCodice
  205. End Sub
  206. End Class
  207.  
  208. Public Class Posizioni
  209. Protected lista As New List(Of Posizione)
  210.  
  211. Public Function GetLista() As List(Of Posizione)
  212. Return lista
  213. End Function
  214.  
  215. Public Sub AddPosizione(posizione As Posizione)
  216. lista.Add(posizione)
  217. End Sub
  218. End Class
  219.  
  220. Public Class Posizione
  221. Protected longitude As Double
  222. Protected latitude As Double
  223. Protected altitude As Double
  224.  
  225. Public Function GetAltitude() As Double
  226. Return Me.altitude
  227. End Function
  228.  
  229. Public Function GetLatitude() As Double
  230. Return Me.latitude
  231. End Function
  232.  
  233. Public Function GetLongitude() As Double
  234. Return Me.longitude
  235. End Function
  236.  
  237. Public Sub SetAltitude(altitude As Double)
  238. Me.altitude = altitude
  239. End Sub
  240.  
  241. Public Sub SetLongitude(longitude As Double)
  242. Me.longitude = longitude
  243. End Sub
  244.  
  245. Public Sub SetLatitude(latitude As Double)
  246. Me.latitude = latitude
  247. End Sub
  248. End Class
  249.  
  250. End Class
Success #stdin #stdout 0.08s 25616KB
stdin
Standard input is empty
stdout
Standard output is empty