Imports System
Imports System.Xml
Imports System.Text
Imports System.Collections.Generic
Public Class Test
Public Shared Sub Main()
Dim itiner As New KmlManage.Itinerario()
itiner.SetTitolo("Titolo")
itiner.SetDescrizione("Descrizione")
itiner.SetItineraioCodice("ItinerarioCodice")
Dim posiz As New KmlManage.Posizioni()
Dim posizione As New KmlManage.Posizione()
posizione.SetLatitude(37.810453)
posizione.SetLongitude(-122.410617)
posiz.AddPosizione(posizione)
posizione = New KmlManage.Posizione()
posizione.SetLatitude(36.810453)
posizione.SetLongitude(-121.410617)
posiz.AddPosizione(posizione)
posizione = New KmlManage.Posizione()
posizione.SetLatitude(35.810453)
posizione.SetLongitude(-120.410617)
posiz.AddPosizione(posizione)
posizione = New KmlManage.Posizione()
posizione.SetLatitude(34.810453)
posizione.SetLongitude(-119.410617)
posiz.AddPosizione(posizione)
posizione = New KmlManage.Posizione()
posizione.SetLatitude(33.810453)
posizione.SetLongitude(-118.410617)
posiz.AddPosizione(posizione)
Dim kmlWrite As New KmlManage(itiner, posiz)
kmlWrite.Generate()
End Sub
End Class
Public Class KmlManage
Protected itinerarioWrite As Itinerario
Protected posizioniWrite As Posizioni
Public Sub New(itinerario As Itinerario, posizioni As Posizioni)
Me.itinerarioWrite = itinerario
Me.posizioniWrite = posizioni
End Sub
Public Function Generate() As Boolean
Dim ret As Boolean = False
Try
If IsNothing(itinerarioWrite) Then Throw New Exception("Errore impostazione itinerario")
If IsNothing(posizioniWrite) Then Throw New Exception("Errore impostazione posizini")
Dim lista As List(Of Posizione) = posizioniWrite.GetLista()
If (lista.Count = 0) Then Throw New Exception("Errore numero posizioni")
Dim nomeFile As String = itinerarioWrite.GetItinerarioCodice()
Dim idStyle As String = "LineGreenPoly"
Dim coordinate As String = String.Empty
Dim defineTypeKml = "http://w...content-available-to-author-only...s.net/kml/2.2"
For Each posizione As Posizione In lista
Dim altitude As String = posizione.GetAltitude().ToString().Replace(",", ".")
If (posizione.GetAltitude() = 0) Then altitude = "0.0"
Dim line As String = posizione.GetLongitude().ToString().Replace(",", ".")
line += "," + posizione.GetLatitude().ToString().Replace(",", ".")
line += "," + altitude
line += " "
coordinate += line
Next
If (String.IsNullOrEmpty(coordinate)) Then Throw New Exception("Errore coordinate")
Dim settings As XmlWriterSettings = New XmlWriterSettings()
settings.Indent = True
settings.Encoding = New ASCIIEncoding()
Using writer As XmlWriter = XmlWriter.Create(nomeFile + ".xml", settings)
writer.WriteStartDocument()
writer.WriteStartElement("kml")
writer.WriteAttributeString("xmlns", "kml", Nothing, defineTypeKml)
writer.WriteStartElement("Document")
writer.WriteElementString("name", itinerarioWrite.GetTitolo)
writer.WriteRaw("<description><![CDATA[" + itinerarioWrite.GetDescrizione + "]]></description>")
writer.WriteStartElement("Style")
writer.WriteAttributeString("id", idStyle)
writer.WriteStartElement("LineStyle")
writer.WriteElementString("color", itinerarioWrite.GetColor)
writer.WriteElementString("width", itinerarioWrite.GetWidth.ToString())
writer.WriteEndElement()
writer.WriteStartElement("PolyStyle")
writer.WriteElementString("color", itinerarioWrite.GetColor)
writer.WriteEndElement()
writer.WriteEndElement()
writer.WriteStartElement("Folder")
writer.WriteElementString("name", itinerarioWrite.GetTitolo)
writer.WriteStartElement("Placemark")
writer.WriteElementString("styleUrl", "#" + idStyle)
writer.WriteElementString("name", itinerarioWrite.GetTitolo)
writer.WriteRaw("<description><![CDATA[" + itinerarioWrite.GetDescrizione + "]]></description>")
writer.WriteStartElement("LineString")
writer.WriteElementString("extrude", "1")
writer.WriteElementString("tessellate", "1")
writer.WriteElementString("coordinates", coordinate) ' Lista di tutte le coordinate
writer.WriteEndElement()
writer.WriteEndElement()
writer.WriteEndElement()
' End document.
writer.WriteEndElement()
writer.WriteEndElement()
writer.WriteEndDocument()
End Using
ret = True
Catch ex As Exception
End Try
Return ret
End Function
Public Class Itinerario
Protected titolo As String
Protected descrizione As String
Protected itinerariocodice As String
Protected color As String = "7f00ffff"
Protected width As Integer = 4
Public Function GetWidth() As Integer
Return Me.width
End Function
Public Sub SetWidth(color As Integer)
Me.width = width
End Sub
Public Function GetColor() As String
Return Me.color
End Function
Public Sub SetColor(color As String)
Me.color = color
End Sub
Public Function GetDescrizione() As String
Return Me.descrizione
End Function
Public Function GetTitolo() As String
Return Me.titolo
End Function
Public Function GetItinerarioCodice() As String
Return Me.itinerariocodice
End Function
Public Sub SetTitolo(titolo As String)
Me.titolo = titolo
End Sub
Public Sub SetDescrizione(descrizione As String)
Me.descrizione = descrizione
End Sub
Public Sub SetItineraioCodice(itinerarioCodice As String)
Me.itinerariocodice = itinerarioCodice
End Sub
End Class
Public Class Posizioni
Protected lista As New List(Of Posizione)
Public Function GetLista() As List(Of Posizione)
Return lista
End Function
Public Sub AddPosizione(posizione As Posizione)
lista.Add(posizione)
End Sub
End Class
Public Class Posizione
Protected longitude As Double
Protected latitude As Double
Protected altitude As Double
Public Function GetAltitude() As Double
Return Me.altitude
End Function
Public Function GetLatitude() As Double
Return Me.latitude
End Function
Public Function GetLongitude() As Double
Return Me.longitude
End Function
Public Sub SetAltitude(altitude As Double)
Me.altitude = altitude
End Sub
Public Sub SetLongitude(longitude As Double)
Me.longitude = longitude
End Sub
Public Sub SetLatitude(latitude As Double)
Me.latitude = latitude
End Sub
End Class
End Class