Hi all.
I created a class based on Erel Location example. It works fine but today I got an error
LocManager_LocationError The operation couldn’t be completed. (kCLErrorDomain error 1.)
Permission dialog appeared and permission was granted. I'm using iPhone 7 with iOS 16.
Despite this error Lat / Long are correct and it only happens once.
I don't quite undertand what domain this error is talking about?
Here is a code of my class
Thanks
I created a class based on Erel Location example. It works fine but today I got an error
LocManager_LocationError The operation couldn’t be completed. (kCLErrorDomain error 1.)
Permission dialog appeared and permission was granted. I'm using iPhone 7 with iOS 16.
Despite this error Lat / Long are correct and it only happens once.
I don't quite undertand what domain this error is talking about?
Here is a code of my class
B4X:
Sub Class_Globals
Public LocManager As LocationManager
Public strHeading As String,blnEnable As Boolean
Public strAltitude As String,strBearing As String,strLL As String
Public strSpeed As String,strTime As String,strAccuracy As String
Public Latitude As Double,Longitude As Double
End Sub
'Initializes the object. You can add parameters to this method if needed.
Public Sub Initialize
' If LocManager.IsAuthorized=False Then
LocManager.Initialize("LocManager")
' End If
End Sub
public Sub LocManager_AuthorizationStatusChanged (Status As Int)
Try
If LocManager.AuthorizationStatus = LocManager.AUTHORIZATION_DENIED Then
Log("AUTHORIZATION_DENIED")
blnEnable=False
Else if LocManager.AuthorizationStatus = LocManager.AUTHORIZATION_RESTRICTED Then
Log("AUTHORIZATION_RESTRICTED")
blnEnable=False
Else
blnEnable=True
End If
Main.IsGPSOk=blnEnable
StartLocationUpdates
Catch
Log("LocManager_AuthorizationStatusChanged " & LastException.description)
Main.modFun.ShowError("clsGPS_LocManager_AuthorizationStatusChanged " & LastException.description)
End Try
End Sub
public Sub StartLocationUpdates
Try
'if the user allowed us to use the location service or if we never asked the user before then we call LocationManager.Start.
If LocManager.IsAuthorized Or LocManager.AuthorizationStatus = LocManager.AUTHORIZATION_NOT_DETERMINED Then
LocManager.Start(0)
End If
LocManager.StartHeading
Catch
Log("StartLocationUpdates " & LastException.description)
Main.modFun.ShowError("clsGPS_StartLocationUpdates " & LastException.description)
End Try
End Sub
Public Sub LocManager_HeadingChanged (MagneticHeading As Double, TrueHeading As Double)
Try
If TrueHeading >= 0 Then
strHeading = NumberFormat(TrueHeading, 1, 0) & Chr(176) & " (true north)"
Else
strHeading = NumberFormat(MagneticHeading, 1, 0) & Chr(176) & " (magnetic)"
End If
Catch
Log("LocManager_HeadingChanged " & LastException.description)
Main.modFun.ShowError("clsGPS_LocManager_HeadingChanged " & LastException.description)
End Try
End Sub
public Sub LocManager_AllowCalibration As Boolean
Return True
End Sub
public Sub LocManager_LocationError
Log("Error: " & LastException.description)
Main.modFun.ShowError("LocManager_LocationError " & LastException.description )
End Sub
public Sub LocManager_LocationChanged (Location1 As Location)
Try
If Location1.VerticalAccuracy >= 0 Then
strAltitude = NumberFormat(Location1.Altitude, 1, 1) & "m"
Else
strAltitude = "N/A"
End If
strBearing = ValueOrNA (Location1.Bearing, 1, Chr(176))
If Location1.Accuracy >= 0 Then
strLL = NumberFormat(Location1.Latitude, 2, 4) & " / " & NumberFormat(Location1.Longitude, 2, 4)
Latitude=NumberFormat(Location1.Latitude, 2, 4)
Longitude=NumberFormat(Location1.Longitude, 2, 4)
Else
strLL = "N/A"
Latitude=0
Longitude=0
End If
strSpeed = ValueOrNA(Location1.Speed, 1, "m/s")
strTime = DateTime.Time(Location1.Time)
strAccuracy = ValueOrNA(Location1.Accuracy, 2, "m")
Catch
Log("LocManager_LocationChanged " & LastException.description)
Main.modFun.ShowError("clsGPS_LocManager_LocationChanged " & LastException.description)
End Try
End Sub
Private Sub ValueOrNA(value As Double, NumberOfFractions As Int, unit As String) As String
Try
If value < 0 Then
Return "N/A"
Else
Return NumberFormat(value, 1, NumberOfFractions) & unit
End If
Catch
Log("ValueOrNA " & LastException.description)
Main.modFun.ShowError("clsGPS_ValueOrNA " & LastException.description)
Return "Error"
End Try
End Sub
public Sub CheckGPS As Boolean
Try
Return Main.IsGPSOk
Catch
Log("CheckGPS " & LastException.Description)
Main.modFun.ShowError("SimpleCamera_CheckGPS " & LastException.description)
Return False
End Try
End Sub
Thanks
Last edited: