Files
SDL/VERAG_PROG_ALLGEMEIN/Google/cGoogleAPI.vb
2022-10-12 08:09:19 +02:00

135 lines
5.1 KiB
VB.net

Imports System.IO
Imports System.Net
Imports System.Web
Imports System.Text
Imports VERAG_PROG_ALLGEMEIN.DSFinVKService
Public Class cGoogleAPI
Public Shared APIKEY_distancematrix As String = "AIzaSyAyXX4aYtoE_v0tXhmuiApV6Qo2Ka2ObJY"
Public Shared Sub test()
Dim duration = ""
Dim distance = ""
Dim distanceSek = ""
GoogleDistance("A 4975 Suben 100", "A st. marienkirchen Hackenbuch 27", duration, distanceSek, distance)
MsgBox(duration)
MsgBox(distance)
End Sub
Public Shared Sub GoogleDistance(origin As String, destination As String, ByRef duration As Object, ByRef distance As Object, Optional lkw As Boolean = True, Optional getValues As Boolean = False)
Try
Dim url As String = "https://maps.googleapis.com/maps/api/distancematrix/xml?origins=" & HttpUtility.UrlEncode(origin) & "&destinations=" + HttpUtility.UrlEncode(destination) & "&key=" & APIKEY_distancematrix
' MsgBox(url)
Dim request As WebRequest = WebRequest.Create(url)
Dim response As WebResponse = CType(request.GetResponse(), HttpWebResponse)
Dim reader As StreamReader = New StreamReader(response.GetResponseStream(), Encoding.UTF8)
Dim dsResult As DataSet = New DataSet()
dsResult.ReadXml(reader)
Dim textOrValue As String
If getValues Then
textOrValue = "value"
Else
textOrValue = "text"
End If
If lkw Then
Dim durationSek As Integer = 0
If dsResult.Tables("duration") Is Nothing Then
durationSek = 0
Else
durationSek = dsResult.Tables("duration").Rows(0)("value").ToString()
End If
If IsNumeric(durationSek) Then
durationSek = durationSek * 1.5 ' Bei LKW wird die Zeit um diesen Faktor hochgerechnet
Dim iSpan As TimeSpan = TimeSpan.FromSeconds(durationSek)
duration = iSpan.Hours.ToString.PadLeft(2, "0"c) & " Stunden " & iSpan.Minutes.ToString.PadLeft(2, "0"c) & " Minuten"
End If
Else
If dsResult.Tables("duration") Is Nothing Then
duration = ""
Else
duration = dsResult.Tables("duration").Rows(0)(textOrValue).ToString()
End If
End If
If dsResult.Tables("distance") Is Nothing Then
distance = ""
Else
distance = dsResult.Tables("distance").Rows(0)(textOrValue).ToString()
End If
Catch ex As Exception
MsgBox(ex.Message & ex.StackTrace)
End Try
End Sub
Public Shared Sub GoogleRoute(origin As String, destination As String, ByRef duration As Object, ByRef distance As Object, Optional lkw As Boolean = True)
Try
'die Direction-API bietet detailierte Ergebnisse der Routen
Dim url As String = "https://maps.googleapis.com/maps/api/directions/xml?origin=" & HttpUtility.UrlEncode(origin) & "&destination=" + HttpUtility.UrlEncode(destination) & "&key=" & APIKEY_distancematrix & "&libraries=geometry"
' MsgBox(url)
Dim request As WebRequest = WebRequest.Create(url)
Dim response As WebResponse = CType(request.GetResponse(), HttpWebResponse)
Dim reader As StreamReader = New StreamReader(response.GetResponseStream(), Encoding.UTF8)
Dim dsResult As DataSet = New DataSet()
dsResult.ReadXml(reader)
If lkw Then
Dim durationSek As Integer = 0
If dsResult.Tables("duration") Is Nothing Then
durationSek = 0
Else
durationSek = dsResult.Tables("duration").Rows(0)("value").ToString()
End If
If IsNumeric(durationSek) Then
durationSek = durationSek * 1.5 ' Bei LKW wird die Zeit um diesen Faktor hochgerechnet
Dim iSpan As TimeSpan = TimeSpan.FromSeconds(durationSek)
duration = iSpan.Hours.ToString.PadLeft(2, "0"c) & " Stunden " & iSpan.Minutes.ToString.PadLeft(2, "0"c) & " Minuten"
End If
Else
If dsResult.Tables("duration") Is Nothing Then
duration = ""
Else
duration = dsResult.Tables("duration").Rows(0)("text").ToString()
End If
End If
If dsResult.Tables("distance") Is Nothing Then
distance = ""
Else
distance = dsResult.Tables("distance").Rows(0)("text").ToString()
End If
Dim distanceEU = 0
Dim distanceNotEU = 0
For Each Row As DataRow In dsResult.Tables(0).Rows
For Each Coll As DataColumn In dsResult.Tables(0).Columns
Dim s As String = Row(Coll.ColumnName).ToString()
Next
Next
Catch ex As Exception
MsgBox(ex.Message & ex.StackTrace)
End Try
End Sub
End Class