Sub GetDegreesMinutes(val As Double, IsLatitudeFlag As Boolean) As String
val = Abs(val)
Dim valDeg As Double = Floor(val) 'whole degree
Dim valMin As Double = val - valDeg 'fraction of degree
Dim NumLeadingDigits As Int
If IsLatitudeFlag Then
NumLeadingDigits = 2 + 2
Else
NumLeadingDigits = 3 + 2
End if
Return NumberFormat2(valDeg * 100 + valMin * 60, NumLeadingDigits, 4, 4, False)
End Sub
Sub GetCompassLetter(val As Double, IsLatitudeFlag As Boolean) As String
Dim NegPosCompassLetters As String
If IsLatitudeFlag Then
NegPosCompassLetters = "SN"
Else
NegPosCompassLetters = "EW"
End if
Dim CompassLetter As String
If val < 0 Then
CompassLetter = NegPosCompassLetters.CharAt(0)
Else
CompassLetter = NegPosCompassLetters.CharAt(1)
End If
Return CompassLetter
End Sub
'then
latitude = GetDegreesMinutes(LatitudeDegrees, True)
ns = GetCompassLetter(LatitudeDegrees, True)
longitude = GetDegreesMinutes(LongitudeDegrees, False)
we = GetCompassLetter(LongitudeDegrees, False)